不同控制器中具有不同参数名称的 MVC 路由
MVC Routing with Different Param Name in different Controller
我希望 MVC 能够处理以下两个 url
在我的 AuthorController 中我有一个方法:
AuthorController.cs
public void Edit(int AuthorId) {
}
EditorController.cs
public void Edit(int EditorId) {
}
这可能吗?如果可以,我该如何设置路由配置来处理这个问题?
此默认路由有 "id" 我想要每个操作的更具描述性的变量名称。
我能够让它工作。但不确定这是最佳实践还是正确方法。
我所做的是在路由配置中创建两个新条目来处理不同的变化。
为 RouteConfig.cs 文件中的每个编辑操作定义路由:
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) {
}
我希望 MVC 能够处理以下两个 url
在我的 AuthorController 中我有一个方法:
AuthorController.cs
public void Edit(int AuthorId) {
}
EditorController.cs
public void Edit(int EditorId) {
}
这可能吗?如果可以,我该如何设置路由配置来处理这个问题?
此默认路由有 "id" 我想要每个操作的更具描述性的变量名称。
我能够让它工作。但不确定这是最佳实践还是正确方法。
我所做的是在路由配置中创建两个新条目来处理不同的变化。
为 RouteConfig.cs 文件中的每个编辑操作定义路由:
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) {
}