我希望MVC能够处理以下两个网址
在我的AuthorController中我有一个方法:
AuthorController.cs
public void Edit(int AuthorId) {
}
EditorController.cs
public void Edit(int EditorId) {
}
这是否可行,如果是这样,我如何设置路由配置来处理这个?
此默认路线有" id"我希望每个操作都有一个更具描述性的var名称。
我能够让它发挥作用。但不确定这是最佳做法还是正确方法。
我所做的是在路由配置中创建了两个新条目来处理不同的变体。
答案 0 :(得分:1)
为RouteConfig.cs文件中的每个Edit操作定义路径:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "AuthorEdit",
url: "author/edit/{AuthorId}",
defaults: new { controller = "AuthorController", action = "Edit" },
constraints: new { AuthorId= "\\d+" }
);
routes.MapRoute(
name: "EditorEdit",
url: "editor/edit/{EditorId}",
defaults: new { controller = "EditorController", action = "Edit" },
constraints: new { EditorId= "\\d+" }
);
或者如果您想使用属性路由,请修改RouteConfig.cs文件:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// Enable attribute routing
routes.MapMvcAttributeRoutes();
并在控制器中:
AuthorController.cs
[Route("author/edit/{AuthorId}")]
public void Edit(int AuthorId) {
}
EditorController.cs
[Route("editor/edit/{EditorId}")]
public void Edit(int EditorId) {
}