เมื่อต้องการเปลี่ยนเส้นทางก่อนที่การกระทําใดถูกเรียก
เมื่อคุณเข้าชมไซต์ที่คุณสร้างใน 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วิธีการ