没有(或默认)操作名称的 MVC 路由
MVC Routing with no (or a default) action name
使用 MVC 5,我试图通过路由获得一些友好的 controller/action 名称。用这个把我的头撞在墙上。
鉴于此控制器:
MyController
Index(startPage, pageSize)
EditAction(itemId)
我正在使用两条路线(在继承的 AreaRegistration class 下定义)
context.MapRoute(
"MyControllerRoute",
"myArea/MyController/{action}/{itemId}",
new
{
controller = "MyController",
action = "Index",
itemId = UrlParameter.Optional
},
new[] {"MySite.Areas.MyArea.Controllers"});
context.MapRoute(
"MyControllerRoutePaged",
"myArea/MyController/{action}/{startPage}/{pageSize}",
new
{
controller = "MyController",
action = "Index",
pageSize = UrlParameter.Optional,
startPage = UrlParameter.Optional
},
new[] {"MySite.Areas.MyArea.Controllers"});
我想获得这些链接:
mysite.com/MyArea/MyController/startPage/pageSize
mysite.com/MyArea/MyController/EditAction/itemId
mysite.com/MyArea/MyController2/ (this being the Index action for a given controller)
mysite.com/MyArea/MyController3/ (this being the Index action for another controller)
mysite.com/MyArea/MyController/ (mysite.com/MyArea/MyController/0/20 would also work if paging existis on the controller)
mysite.com/MyArea/MyController/5/20
mysite.com/MyArea/MyController/EditAction/5
分页链接显示在默认索引页上。不在任何 "action pages" 上。特别是我想隐藏索引操作名称,所以我不会以这样的链接结束:
mysite.com/MyArea/MyController/MyController/.../
如果我在路线中删除 {action} 占位符但路线最终发生冲突,我可以实现此目的。我尝试过使用 ActionLink 和 RouteLink(定义路线名称),但总有一条路线首先匹配并中断下一条路线。如果我改变路线的顺序,这仍然会发生,但相反。
我正在使用路由调试器,我可以看到哪里出了问题,但我一直在兜圈子,试图让它工作。
有什么想法吗?谢谢
我认为您应该使用 Attribute Routing 自定义路由。
使用 MVC 5,我试图通过路由获得一些友好的 controller/action 名称。用这个把我的头撞在墙上。
鉴于此控制器:
MyController
Index(startPage, pageSize)
EditAction(itemId)
我正在使用两条路线(在继承的 AreaRegistration class 下定义)
context.MapRoute(
"MyControllerRoute",
"myArea/MyController/{action}/{itemId}",
new
{
controller = "MyController",
action = "Index",
itemId = UrlParameter.Optional
},
new[] {"MySite.Areas.MyArea.Controllers"});
context.MapRoute(
"MyControllerRoutePaged",
"myArea/MyController/{action}/{startPage}/{pageSize}",
new
{
controller = "MyController",
action = "Index",
pageSize = UrlParameter.Optional,
startPage = UrlParameter.Optional
},
new[] {"MySite.Areas.MyArea.Controllers"});
我想获得这些链接:
mysite.com/MyArea/MyController/startPage/pageSize
mysite.com/MyArea/MyController/EditAction/itemId
mysite.com/MyArea/MyController2/ (this being the Index action for a given controller)
mysite.com/MyArea/MyController3/ (this being the Index action for another controller)
mysite.com/MyArea/MyController/ (mysite.com/MyArea/MyController/0/20 would also work if paging existis on the controller)
mysite.com/MyArea/MyController/5/20
mysite.com/MyArea/MyController/EditAction/5
分页链接显示在默认索引页上。不在任何 "action pages" 上。特别是我想隐藏索引操作名称,所以我不会以这样的链接结束:
mysite.com/MyArea/MyController/MyController/.../
如果我在路线中删除 {action} 占位符但路线最终发生冲突,我可以实现此目的。我尝试过使用 ActionLink 和 RouteLink(定义路线名称),但总有一条路线首先匹配并中断下一条路线。如果我改变路线的顺序,这仍然会发生,但相反。
我正在使用路由调试器,我可以看到哪里出了问题,但我一直在兜圈子,试图让它工作。
有什么想法吗?谢谢
我认为您应该使用 Attribute Routing 自定义路由。