Asp.net mvc ASP.NET MVC忽略。路由问题

Asp.net mvc ASP.NET MVC忽略。路由问题,asp.net-mvc,asp.net-mvc-routing,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应用程序请求以下URL时,我不断地被重定向到HomeController

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

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

routes.IgnoreRoute(".*m=standardvalue.*");
因此,我所期望的结果是,每当URL包含“m=standardvalue”时,它都不会将我带到HomeController。可能是我做的完全错误,有人可以为我指出解决问题的好方向

其他信息:
这个链接看起来一点也不像MVC,这是因为应用程序请求路由(IIS7)捕获这个URL并将其转换为运行PHP的Web服务器。

这里需要的是路由约束。如果请求的URL没有目标控制器,并且包含一个带有等于standardvalue的变量m的查询字符串,则约束将返回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() }
);

伟大的这是工作,所以谢谢你。接下来我想添加standardvalue1,standardvalue2。。因此,如果您有一个简单的修复方法,请让我知道。在约束中使用正则表达式来验证m是否与您的表达式匹配感谢您的快速回复,我通过向DefaultWithoutParamsConstraint()添加2个属性(参数和值)并通过lamda表达式加载来修复它