首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActionExecutingContext - ActionParameters vs RouteData

ActionExecutingContext - ActionParameters vs RouteData
EN

Stack Overflow用户
提问于 2012-11-01 09:54:11
回答 1查看 14.4K关注 0票数 15

给定以下代码:

代码语言:javascript
复制
public class MyActionFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var a = filterContext.ActionParameters["someKey"];
        var b = filterContext.RouteData.Values["someKey"];          
        base.OnActionExecuting(filterContext);
    }
}

ab有什么区别?

什么时候我们应该在路由数据上使用动作参数?有什么关系?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-03 19:50:18

OnActionExecuting上使用ActionParameters时,您可以在处理操作之前更改客户端发送的值,例如:

代码语言:javascript
复制
public class MyActionFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        filterContext.ActionParameters["customerId"] = 852;

        base.OnActionExecuting(filterContext);
    }
}

如果您有一个使用customerId参数的操作,您将获得在操作筛选器上设置的值,因为您的操作具有筛选器,例如:

当您像这样请求任何url时:/customer/detail/123,您将在CustomerId上获得852值:

代码语言:javascript
复制
[MyAction]
public ActionResult Detail(int customerId)
{
   // customerId is 852

   return View();
}

RouteData只是关于url上的值,通过路由表进行处理。

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13169937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档