hbr*_*uce 2 asp.net-mvc routing
作为ASP.MVC的新手,我正在寻找以下路由问题的解决方案.
我希望这些Url指向显示的页面:
/会员/ 123/A + Strange +用户名 - >页面,会员详细信息
/会员/ 123 - >如上
/会员/ Connections/123 - >页面,会员列表连接
/会员/连接/ 123/A + Strange +用户名 - >如上
/会员/评论/ 123 - >页面与会员列表评论
/会员/评论/ 123/A +奇怪+用户名 - >如上
应忽略用户名,但会将其附加到链接以帮助搜索引擎.
我尝试过以下路线:
routes.MapRoute("MemberPage", "Member/{id}/{*name}", new { controller = "Member", action = "Details", id = "" });
routes.MapRoute("MemberAction", "Member/{action}/{id}/{*name}", new { controller = "Member", action = "Details", id = "" });
Run Code Online (Sandbox Code Playgroud)
但它似乎总是默认为第一个路由,然后得到一个错误,因为"Connections"或"Comments"是Details控制器的无效id.
有没有办法根据id值的类型切换路由,或者另一种方法来解决这个问题?
如果您将路由约束添加到{id}两条路由,这可能会有所帮助.
routes.MapRoute("MemberPage", "Member/{id}/{*name}",
new { controller = "Member", action = "Details", id = "" },
new { id=@"\d+" });
routes.MapRoute("MemberAction", "Member/{action}/{id}/{*name}",
new { controller = "Member", action = "Details", id = "" },
new { id=@"\d+" });
Run Code Online (Sandbox Code Playgroud)
这样,它就不会尝试在第一条路线中将"评论"映射到{id},而是会落到第二条路线上,这条路线可以正常工作.
| 归档时间: |
|
| 查看次数: |
416 次 |
| 最近记录: |