asp.net-mvc – 为什么这条路线不匹配
我在寻找匹配路线方面遇到了一些麻烦.
我使用base-32编码的int作为Web应用程序中幻灯片的短链接.每个幻灯片有5个不同版本,我使用首字母来区分每个版本. 路由始终匹配,除非base-32编码的int的第一个字符与指定幻灯片版本的字符相同.所有5个前缀字母都存在此异常:n,f,c,x和h. 前两个字符相同会使这些路线不匹配?我无法理解这里发生了什么(当路线不匹配时,它们只会达到默认值). 路线匹配(/ na0): 路线不匹配(/ nn0): 路线匹配(/ nfg): 路线不匹配(/ ffg): 我很难过.这是路由代码,如果在屏幕截图中的RouteDebug表中不清楚: routes.MapRoute( "NonBrandedSlideshow","n{id}",MVC.Slideshow.NonBranded(),null,new { id = Settings.Base32Regex } ); routes.MapRoute( "FullSlideshow","f{id}",MVC.Slideshow.Full(),new { id = Settings.Base32Regex } ); routes.MapRoute( "CompactSlideshow","c{id}",MVC.Slideshow.Compact(),new { id = Settings.Base32Regex } ); routes.MapRoute( "FlexibleSlideshow","x{id}",MVC.Slideshow.Flexible(),new { id = Settings.Base32Regex } ); routes.MapRoute( "Html5Slideshow","h{id}",MVC.Slideshow.NonBrandedHtml5(),new { id = Settings.Base32Regex } ); 我在这里应该注意,我使用的是T4MVC(参见第2.2.5节),这些MapRoute方法是T4MVC添加的扩展.我使用的MapRoute方法等同于标准方法,我尝试使用非T4MVC MapRoute方法,结果相同: routes.MapRoute( "Html5Slideshow",new { controller = "Slideshow",action = "NonBrandedHtml5" },new { id = Settings.Base32Regex } ); 这是Base32Regex,虽然我已经尝试了它有没有这个约束(我使用的Base32实现将假设I和O是1和0,例如). public static partial class Settings { public static string Base32Regex { get { return @"[0-9ABCDEFGHJKMNPQRSTVWXYZ]+"; } } } 解决方法
好吧,我同样可怜.我执行了一些其他测试,据我所知,当路由参数之前的常量具有相同的重复字符时,这必须是检查路由的方式中的一些错误.其他一些令人难以置信的例子:
"nn{id}" route matches (/nna0) route doesn't match (/nnn0) "nnn{id}" route matches (/nnna0) route doesn't match (/nnnn0) 一旦我使常数不重复相同的字符,一切都很好 "mn{id}" route matches (/mna0) route matches (/mnn0) route matches (/mnmn) 这可能不是您正在寻找的.但考虑到情况的奇怪,这是我唯一能想到的.将常量添加到约束中并将其从URL中删除.然后在你的控制器中(这是我不喜欢的部分)你需要从id参数中删除该常量.希望这有效,或至少帮助激发另一种解决方案. routes.MapRoute( "NonBrandedSlideshow","{id}",new { id = "n"+Settings.Base32Regex } ); 更新: 我想这是known issue,谢谢@ max-toro (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 知道当前的URL是否包含在RouteTable.Routes中
- asp.net-mvc – 在使用ModelBinder之前更改文化
- 一步步开发自己的博客 番外篇(7、异步记录日志 和 文章阅读
- 经典的asp和ASP.NET MVC可以在同一个站点上并行运行吗?
- .net – 404控制器在外部组件
- asp.net – ‘没有重载的方法’ToString’采取’1’参数’错
- 在实例化.NET类时,经典ASP使用了什么AppDomain?
- asp.net – 为每个网站/应用程序创建单独的IIS应用程序池的
- 扩展GridView实现的一个自定义无刷新分页,排序,支持多种数
- .net – 使用新技术时的安全问题
- asp.net – Crystal Reports仅在本地显示条形码
- asp.net – 在IIS中,为什么窗口验证不显示为我的
- ASP.NET MVC是一个大的企业项目的不好的选择吗?
- rest – 使用WebAPI删除多个ID删除端点?
- asp.net-mvc – 构建与数据格式分离的ASP.NET MV
- asp.net-mvc-4 – 多个RequiredFieldValidator崩
- asp.net – 哪个更适合性能视图状态或会话
- asp.net-mvc – 重定向到不同的控制器
- .net – 为MembershipProvider添加额外的属性
- asp.net-mvc – ViewData Dictionary的范围是什么