我无法恢复自定义路由上的查询字符串参数 - MVC4

时间:2013-06-07 18:46:45

标签: c# asp.net-mvc-4 visual-studio-2012

在我的应用程序中,我有以下路线,就在默认路线之前:

routes.MapRoute(
    name: "SubUser",
    url: "{subUser}/{controller}/{action}/{id}",
    defaults: new { subUser = "0", controller = "Home", action = "Index", id = UrlParameter.Optional },
    constraints: new RouteValueDictionary { { "subUser", "[0-9]{11,14}" } }
);

我在CustomFilter注册app_start/filterconfig.cs,他会尝试在每个请求中恢复subUser(如果存在),并将其保留到下一个响应中。

但是我无法在我的CustomFilter中恢复它,在调试器上我可以看到另一个参数,但不是他。 我知道我做错了什么?

1 个答案:

答案 0 :(得分:1)

你是如何尝试恢复此参数的?尝试使用routeValues。适合我。

public class LocalizationFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        base.OnActionExecuting(filterContext);
        string culture = filterContext.HttpContext.Request.RequestContext.RouteData.Values["culture"].ToString();
        string subUser = filterContext.HttpContext.Request.RequestContext.RouteData.Values["subUser"].ToString();       
    }
}