【发布时间】:2018-07-26 08:44:49
【问题描述】:
我在 ASP.NET Core 2.1 MVC 中有以下地图路线:
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
HomeController 有动作
-
Index显示默认站点页面 -
Projects显示项目列表 -
Project显示特定项目的详细信息(将其 id 作为输入)
项目中还有其他控制器。
我想以如下方式更新路由:
-
Home控制器操作在 URL 中没有Home的情况下被映射。我不想列出路由定义中的所有操作,规则应该是通用的。-
HomeController.Index=>/ -
HomeController.Projects=>/Projects(或更好的小写字母projects) -
HomeController.Project(id: 4)=>/Project/4(或更好的小写字母project/4)
-
- 其他控制器遵循标准 ASP.NET 路由机制
Controller/Action。
实现此目的的推荐方法是什么?有可能吗?
【问题讨论】:
-
“列出路由定义中的所有操作”是什么意思?使用您当前的地图路线,您无需指定其他任何内容。控制器及其操作将自动具有路由 {myurl}/ControllerName/ActionName
-
我的意思是我不想为 /projects 设置一个规则,为 /project/4 设置另一个规则,为 Home 控制器中的其他操作设置另一个规则(我没有列出所有),相反,我更喜欢有一个规则将匹配 Home 控制器中的所有操作并生成一个没有 Home 控制器的 url。默认规则将为 HomeController.Products 操作生成 /Home/Products,但应改为 /Products。
标签: c# asp.net asp.net-mvc asp.net-core