เมื่อต้องการเปลี่ยนเส้นทางก่อนที่การกระทําใดถูกเรียก

วันที่สร้างเพจ :

เมื่อคุณเข้าชมไซต์ที่คุณสร้างใน ASP.NET MVC URL และการกําหนดเส้นทางจะเรียกการดําเนินการควบคุมที่เกี่ยวข้อง แต่ในบางสถานการณ์คุณอาจต้องการเปลี่ยนเส้นทางไปยังการกระทําหรือหน้าอื่นก่อนที่จะเรียกการกระทําที่สอดคล้องกัน

ถ้าคุณต้องการแต่ละการดําเนินการเปลี่ยนเส้นทาง คุณสามารถใช้ RedirectResult หรือ RedirectToRouteResult เพื่อแก้ปัญหาได้ แต่คุณสามารถใช้วิธีการแทนที่ Controller.OnActionExecuting หากคุณต้องการเปลี่ยนเส้นทางร่วมกันก่อนที่แต่ละการกระทําจะถูกเรียก วิธีนี้เป็นวิธีที่มีการจัดการก่อนที่จะเรียกแต่ละการดําเนินการ

ถ้าคุณต้องการวิธีการควบคุม.OnActionExecuting การเปลี่ยนเส้นทาง:

public class MyController : Controller
{
  // 各アクションが呼ばれる前に呼ばれるメソッド
  public override void OnActionExecuting(ActionExecutingContext filterContext)
  {
    if (リダイレクトさせる条件)
    {
      filterContext.Result = new RedirectResult(url);
      return;
    }
  }
}

ถ้าคุณตั้งค่าการเปลี่ยนเส้นทางผลลัพธ์ด้วย URL ใน ActionExecutingContext.Result คุณเปลี่ยนเส้นทางไปยัง URL ที่ระบุ ถ้าคุณไม่สาขาที่มีคําสั่ง if เปลี่ยนเส้นทางจะดําเนินการกับการดําเนินการทั้งหมดที่อยู่ในตัวควบคุมเป้าหมาย

คุณยังสามารถตั้งค่าคลาสตัวควบคุมทั่วไปสําหรับแต่ละคลาสระดับคอนโทรลเลอร์และใช้วิธีการOnActionExecutingเพื่อใช้ร่วมกันกับคลาสควบคุมหลายคลาส

"ActionExecutingContext.Result" เป็นชนิด ActionResult ดังนั้นคุณสามารถใช้การเปลี่ยนเส้นทางไปยังRouteResultคลาสหรือตัวควบคุม.เปลี่ยนเส้นทางไปยังActionวิธีการ