Asp.net mvc ASP.NET MVC忽略。路由问题
当我从我的MVC应用程序请求以下URL时,我不断地被重定向到HomeController www.mymvcapp.com/?m=standardvalue&a=someothervalue&code=12345 现在,我试图通过编辑Global.asax.cs请求路由来克服这个问题,例如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
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表达式加载来修复它