[英]ActionExecutingContext.ActionParameters NULL on RedirectToAction MVC 5 - T4MVC
我有一個重定向,如:
return RedirectToAction(MVC.Area.Controller.Index(institutionId));
這將重定向到一個從另一個控制器繼承的控制器,該控制器具有如下定義的動作過濾器:
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
var institutionId = filterContext.ActionParameters["institutionId"];
var institution = InstitutionRepository.GetById((int)institutionId);
...other code
}
ActionExecutingContext.ActionParameters包含機構ID,但該值始終為NULL。 我也嘗試過重定向到路由,但這給出了相同的輸出。 令我困擾的是,當我查看路線時,似乎使用查詢參數傳遞了機構ID(Area / Controller?institutionId = 17而不是Area / Controller / 17)
MVC代表T4MVC,它是用於避免在重定向中對字符串進行硬編碼的框架。
如果某個時候有人遇到它,那實際上是很棘手的。 在某些情況下,T4MVC似乎使視圖和解釋混亂:
return RedirectToAction(MVC.Area.Controller.Index(institutionId));
如
return RedirectToAction(MVC.Area.OtherController.Index(institutionId));
查看ActionParameters,該集合在routeData中同時包含Controller和OtherController,因此似乎只是按視圖名稱(索引)查找Controller名稱,找到了屬於兩個Controller的兩個實例,並生成了損壞的MVC重定向字符串。 更改視圖的名稱后,ActionParameters開始正確解析。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.