asp.net-mvc – ActionExecutingContext – ActionParameters与RouteData

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – ActionExecutingContext – ActionParameters与RouteData前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
给出以下代码
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参数执行操作,那么您将获取设置在操作过滤器上的值,因为您的操作具有过滤器,例如:

当您请求这样的URL:/ customer / detail / 123时,您将获得CustomerId上的852值:

[MyAction]
public ActionResult Detail(int customerId)
{
   // customerId is 852

   return View();
}

RouteData只是关于URL的值,由路由表进行处理.

猜你在找的asp.Net相关文章