ASP.NET MVC Ignore.Routing问题

时间:2012-06-03 16:15:56

标签: asp.net-mvc asp.net-mvc-routing

当我从我的MVC应用程序请求以下URL时,我不断被重定向到HomeController。

www.mymvcapp.com/?m=standardvalue&a=someothervalue&code=12345

现在我试图通过编辑Global.asax.cs请求路由来克服这个问题,例如

routes.IgnoreRoute(".*m=standardvalue.*");

所以我期望的结果是,当URL包含“m = standardvalue”时,它不会将我带到HomeController。这可能是我完全错了,有人可以指出我解决问题的好方向。

其他信息: 该链接看起来不像MVC,因为Apllication Request Routing(IIS7)捕获此URL并将其转换为运行PHP的Web服务器。

1 个答案:

答案 0 :(得分:1)

这里需要的是路线约束。如果请求的URL没有目标控制器并且包含一个变量m等于standardvalue的查询字符串,则约束将返回true。

public class DefaultWithoutParamsConstraint : IRouteConstraint
{
    public bool Match(HttpContextBase httpContext,
                      Route route,
                      string parameterName,
                      RouteValueDictionary values,
                      RouteDirection routeDirection)
    {
        return values[parameterName] == null &&
               httpContext.Request.QueryString["m"] == "standardvalue";
    }
}

现在只需将此约束添加到您的忽略列表中:

routes.IgnoreRoute(
    "{*controller}",
    new { controller = new DefaultWithoutParamsConstraint() }
);