asp.net-mvc – Route Constraint Isnt适用于ASP.NET MVC
发布时间:2020-12-16 03:28:09 所属栏目:asp.Net 来源:网络整理
导读:为什么路线http:// localhost:2222/2012-adidas- spring-classic / 37,不能从以下路线匹配中获取?我收到404错误. public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.IgnoreRoute("
为什么路线http:// localhost:2222/2012-adidas-
spring-classic / 37,不能从以下路线匹配中获取?我收到404错误.
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.IgnoreRoute("{*vti_inf}",new { vti_inf = @"(.*/)?_vti_inf.html(/.*)?" }); routes.IgnoreRoute("{*vti_rpc}",new { vti_rpc = @"(.*/)?_vti_rpc(/.*)?" }); #region API routes.MapRouteLowercase( "NamedHomeEvent","{year}-{name}/{Id}",new { controller = "Event",action = "Index",year = DateTime.Now.Year },new { year = @"d{4}",Id = @"d+" } ); public virtual ActionResult Index(int? id,int? year,string name) { 解决方法
路由引擎无法帮助您.您可以编写自定义路由来处理这种情况:
public class MyRoute : Route { public MyRoute() : base( "{year-name}/{id}",new RouteValueDictionary(new { controller = "Event",id = UrlParameter.Optional }),new RouteValueDictionary(new { id = @"d*" }),new MvcRouteHandler() ) { } public override RouteData GetRouteData(HttpContextBase httpContext) { var routeData = base.GetRouteData(httpContext); if (routeData == null) { return null; } var yearName = (string)routeData.Values["year-name"]; if (string.IsNullOrWhiteSpace(yearName)) { return null; } var parts = yearName.Split(new[] { '-' },2,StringSplitOptions.RemoveEmptyEntries); if (parts.Length < 2) { return null; } var year = parts.First(); int yearValue; if (!int.TryParse(year,out yearValue)) { return null; } var name = parts.Last(); routeData.Values.Add("year",year); routeData.Values.Add("name",name); return routeData; } } 然后注册这条路线: public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.IgnoreRoute("{*vti_inf}",new { vti_inf = @"(.*/)?_vti_inf.html(/.*)?" }); routes.IgnoreRoute("{*vti_rpc}",new { vti_rpc = @"(.*/)?_vti_rpc(/.*)?" }); routes.Add("NamedHomeEvent",new MyRoute()); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- ASP.NET MVC“组件”
- asp.net-mvc – 在DropDownList中验证所需的选择
- asp.net – 让网站暂时无法使用的优雅方式?
- asp.net-mvc – 来自EDMX文件的MVC模型 – 为其添
- asp.net-mvc-2 – 如何在局部视图中获取与父操作
- asp.net – 是否可以将.ASPXAUTH用于我自己的日志
- asp.net – 如何在MVC3中使用https生成绝对URL?
- asp.net-mvc – ASP.net MVC验证钩
- asp.net-mvc-3 – Ninject – 无法找到资源
- asp.net-mvc-4 – ASP.NET Web API的自定义MVC A
热点阅读