.NET MVC 自定义路由不同的默认控制器
.NET MVC custom route different default controller
.NET MVC。我在定义和使用自定义路由时遇到了一些问题。
我有一个只有 2 个动作的控制器。这些动作方法各接收 2 个参数。我在 RouteConfig.cs 中添加了一个自定义路由(在默认路由之前),像这样
routes.MapRoute(
name: "customRoute",
url: "MyController/{action}/{entityType}/{id}",
defaults: new { controller = "MyController", action = "Index", entityType = UrlParameter.Optional, id = UrlParameter.Optional }
);
如果 MyController 确实包含 Index 方法(和相应的视图),则此方法有效。
问题是,MyController 不包含 Index 方法(仅包含之前提到的 2 个操作方法),我希望 route.default 类似于 Home/Index 而不是 .但如果我将路线更改为:
routes.MapRoute(
name: "customRoute",
url: "MyController/{action}/{entityType}/{id}",
defaults: new { controller = "Home", action = "Index", entityType = UrlParameter.Optional, id = UrlParameter.Optional }
);
它不起作用。显然,route.url 中的控制器必须与 route.defaults 中的控制器相同...
CORRECTION:路由适用于正确的 url,但对于错误的路由(例如在末尾添加另一个参数),它显示 404 错误(使意义,因为 MyController.Index 不存在)
那么,如何实现呢?
url: "MyController/{action}/{entityType}/{id}"
在这里,你所说的是你的自定义路由的 URL 模式应该以 MyController(My/) 开头。
如果 url 模式与配置的路由(包括默认路由)不匹配,您将遇到 404 错误。
我可以建议 2 种方法来实现您想要的...
在您的 MyController 中创建第三个方法作为默认方法,其任务是重定向到 Home/Index。
或
在具有 entityType 和 Id.
参数的家庭控制器中创建一个新方法
您不能为 Home/Index 创建重载,因为控制器上最多只能有 2 个同名的操作方法。
看到这个。
Routing: The current request for action [...] is ambiguous between the following action methods
.NET MVC。我在定义和使用自定义路由时遇到了一些问题。 我有一个只有 2 个动作的控制器。这些动作方法各接收 2 个参数。我在 RouteConfig.cs 中添加了一个自定义路由(在默认路由之前),像这样
routes.MapRoute(
name: "customRoute",
url: "MyController/{action}/{entityType}/{id}",
defaults: new { controller = "MyController", action = "Index", entityType = UrlParameter.Optional, id = UrlParameter.Optional }
);
如果 MyController 确实包含 Index 方法(和相应的视图),则此方法有效。 问题是,MyController 不包含 Index 方法(仅包含之前提到的 2 个操作方法),我希望 route.default 类似于 Home/Index 而不是 .但如果我将路线更改为:
routes.MapRoute(
name: "customRoute",
url: "MyController/{action}/{entityType}/{id}",
defaults: new { controller = "Home", action = "Index", entityType = UrlParameter.Optional, id = UrlParameter.Optional }
);
它不起作用。显然,route.url 中的控制器必须与 route.defaults 中的控制器相同...
CORRECTION:路由适用于正确的 url,但对于错误的路由(例如在末尾添加另一个参数),它显示 404 错误(使意义,因为 MyController.Index 不存在)
那么,如何实现呢?
url: "MyController/{action}/{entityType}/{id}"
在这里,你所说的是你的自定义路由的 URL 模式应该以 MyController(My/) 开头。 如果 url 模式与配置的路由(包括默认路由)不匹配,您将遇到 404 错误。
我可以建议 2 种方法来实现您想要的...
在您的 MyController 中创建第三个方法作为默认方法,其任务是重定向到 Home/Index。
或
在具有 entityType 和 Id.
参数的家庭控制器中创建一个新方法您不能为 Home/Index 创建重载,因为控制器上最多只能有 2 个同名的操作方法。
看到这个。
Routing: The current request for action [...] is ambiguous between the following action methods