我有一个ASP.NET MVC 3应用程序,用户可以发布建议,如果 " 如果 yada yada yada,bla bla 会更好 ".对于建议详细信息页面,我已经定义了一个很好的SEO友好路线如下:
routes.MapRoute(null, "suggestion/{id}/{it}/would-be-better-if-{if}",
new { controller = "suggestion", action = "details" });
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我希望修复"将会更好".
此路由适用于任何旧建议并生成类似链接suggestion/5/this-site/would-be-better-if-it-had-a-iphone-application,并且单击链接实际请求相应的详细信息页面.
我的一个朋友,具有讽刺意味的恰好是一个测试人员,已经设法,不由自主地发布了一条实际上打破了这条路线的建议:" 如果'总是在中间对齐,那么这个网站会更好 ".
为此建议生成的链接是
/suggestion/84/this-site/would-be-better-if-would-be-better-if-was-always-alligned-in-the-middle.
我已经尝试了Phil Haack的路由调试器,并确认该路由实际上会工作到suggestion/84/this-site/would-be-better-if-would-be-better-if-,所以第二个"将会更好 - 如果"实际上已被接受; 之后添加任何内容实际上会导致网址不匹配任何路由(感谢Omar -see评论 - 寻求帮助).
请记住,我真的不想改变路线定义,因为我认为这对于这个案例来说是一样好,SEO-wise.
那么,如何让文本等于路由的固定部分会阻止链接匹配路由?路线为何破裂?
我实际上对这个原因更感兴趣,因为我相信理解为什么会导致解决方案或至少正确理解一个相当有趣的问题.
asp.net-mvc routes asp.net-mvc-routing system.web.routing asp.net-mvc-3
我正在使用System.Web.Routing来获得更好的URL,并遇到了一个问题.我需要知道处理请求的实际页面.
例如,请求来自:
/basketball/home
Run Code Online (Sandbox Code Playgroud)
我需要找到处理该请求的页面,例如:
/management/default.aspx
Run Code Online (Sandbox Code Playgroud)
我只使用System.Web.Routing而不是MVC.我有一个RequestContext的句柄,它包含一些路由信息,但我看不到我需要的东西.
提前致谢.
*******更新*******
我能够使用Context.CurrentHandler,它给我"ASP.management_default_aspx",不完全是页面,但足以获取页面名称.
您如何根据Bootstrap示例项目中的角色有条件地显示菜单项?我正在考虑做以下事情
INavigatonRouteFilter- 实际上只是实现shouldRemove(Route navigationRoutes)方法 - 通过获取路由的默认控制器/操作并查看用户是否已获得授权NavigationRoutes.Filters.Add(myAuthorizationFilter)配置后,NavigationRoutes在App_Start我用这种方法看到了两个问题:
Controller明确检查名称,否则我实际上并不知道如何执行第一步NavigationRoutes.Filters一旦有很多过滤器或以后需要更多的模块化,这似乎很难处理我不知道我已经清楚地解释了这个问题,但基本上我想使用Bootstrap示例中提供的内容来实现基于授权的导航菜单显示(如果可能的话).使用INavigationRouteFilter似乎是最自然的方式.
asp.net-mvc system.web.routing asp.net-mvc-4 twitter-bootstrap