首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在OnActionExecuting中获取参数?

如何在OnActionExecuting中获取参数?
EN

Stack Overflow用户
提问于 2009-07-23 17:03:55
回答 5查看 15.1K关注 0票数 13

我稍微修改了一下默认路由规则,如下所示:

代码语言:javascript
复制
routes.MapRoute(
  "Default",                                              // Route name
  "{controller}/{action}/{id}",                           // URL with parameters
  new { controller = "Home", action = "Index", id= (string)null }  // Parameter defaults
);

然后我可以将url设置为:

代码语言:javascript
复制
/Controller/Action/myParam
/Home/Index/MyParam

默认操作索引为:

代码语言:javascript
复制
public ActionResult Index(string id)
{
  //....
}

我可以让这个参数生效。但我想在OnActionExecuting中获得参数。我该怎么做呢?

EN

回答 5

Stack Overflow用户

发布于 2009-07-23 17:11:31

您应该能够使用以下命令访问它:

代码语言:javascript
复制
public override void OnActionExecuting(ActionExecutingContext filterContext) {
    string id = filterContext.RouteData.Values["id"];
    //...
}
票数 29
EN

Stack Overflow用户

发布于 2021-06-02 17:26:29

它可以从OnActionExecuting中的ActionArguments访问。

代码语言:javascript
复制
public override void OnActionExecuting(ActionExecutingContext context) {
    string id = context.ActionArguments["id"].ToString();
    //...
}
票数 1
EN

Stack Overflow用户

发布于 2014-04-05 05:22:16

如果想要获取控制器、操作和所有参数,可以这样做

代码语言:javascript
复制
    var valuesStr = new StringBuilder();
    if (ctx.RouteData != null && ctx.RouteData.Values != null)
        foreach (var v in ctx.RouteData.Values)
            valuesStr.AppendFormat("/{0}", v.Value);
    _logger.Info("executing {0}", valuesStr.ToString());
    which results in the whole path 

结果如下:

代码语言:javascript
复制
"/Get/Customer/215840"

它也应该在多个参数上工作。

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

https://stackoverflow.com/questions/1173158

复制
相关文章

相似问题

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