.net ActionExecutingContext-ActionParameters与RoutedData
给定以下代码:.net ActionExecutingContext-ActionParameters与RoutedData,.net,asp.net-mvc,asp.net-mvc-4,asp.net-mvc-routing,action-filter,.net,Asp.net Mvc,Asp.net Mvc 4,Asp.net Mvc Routing,Action Filter,给定以下代码: public class MyActionFilter : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { var a = filterContext.ActionParameters["someKey"]; var b = filterContext.RouteData.Va
public class MyActionFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var a = filterContext.ActionParameters["someKey"];
var b = filterContext.RouteData.Values["someKey"];
base.OnActionExecuting(filterContext);
}
}
a
和b
之间有什么区别
什么时候应该对路由数据使用操作参数?区别是什么?当您在
OnActionExecuting
上使用ActionParameters
时,您可以在处理操作之前更改客户端发送的值,例如:
public class MyActionFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.ActionParameters["customerId"] = 852;
base.OnActionExecuting(filterContext);
}
}
如果您有一个使用customerId参数的操作,您将获得在操作筛选器上设置的值,因为您的操作具有筛选器,例如:
public class MyActionFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.ActionParameters["customerId"] = 852;
base.OnActionExecuting(filterContext);
}
}
当您请求这样的url时:/customer/detail/123
,您将在CustomerId上获得852
值:
[MyAction]
public ActionResult Detail(int customerId)
{
// customerId is 852
return View();
}
RouteData
只是url上的值,按路由表处理 当你需要他时,@DarinDimitrov在哪里。:)