Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net ActionExecutingContext-ActionParameters与RoutedData_.net_Asp.net Mvc_Asp.net Mvc 4_Asp.net Mvc Routing_Action Filter - Fatal编程技术网

.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在哪里。:)