路由中未指定控制器
No controller specified in route
情况:
我有一个 ASP.NET 应用程序,其中有不同的控制器。我在 RouteConfig 中将路由更改为:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"SpecificRoute",
"{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional });
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Error", action = "NotFound", id = UrlParameter.Optional }
我的 HomeController 中的所有页面都工作正常。我找到他们的一种方式是使用 ActionLink:
@Html.ActionLink("Index Page", "Index", "Home")
而且效果很好,即使上下文的其他方式也是如此:“example”,"Home".
当我 select 另一个控制器时出错,比方说:
@Html.ActionLink("GoToErrorPage", "NotFound", "Error") // error page
这个link的结果是,它只是连接到主页。它没有转到正确的页面。
我想使用 URL 连接到所有页面(在其他控制器中也是如此),例如:
原始 url 的样子(在 RouteConfig 中更改之前)
问题:
我需要如何配置RouteConfig?
如何设置之前不需要输入控制器
url?
中的动作
- 如何正确设置 ActionLink?
您的两条路线实际上是相同的,因为它们都匹配具有 2 个路段的任何 url。如果您希望能够在不指定控制器名称的情况下导航到一个方法,那么您将需要为每个方法创建特定的路由。例如,如果您想使用 ../Request
或 ../Request/1
导航到 HomeController
的 Request(int? id)
方法,那么您需要
routes.MapRoute(
"Request",
"Request/{id}",
new { controller = "Home", action = "Request", id = UrlParameter.Optional }
);
并且该路由必须放在默认路由之前
然后在视图中 @Html.ActionLink("Request Page", "Request", "Home")
将生成 ../Request
的 url 并转到 HomeController
的 Request()
方法
情况:
我有一个 ASP.NET 应用程序,其中有不同的控制器。我在 RouteConfig 中将路由更改为:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"SpecificRoute",
"{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional });
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Error", action = "NotFound", id = UrlParameter.Optional }
我的 HomeController 中的所有页面都工作正常。我找到他们的一种方式是使用 ActionLink:
@Html.ActionLink("Index Page", "Index", "Home")
而且效果很好,即使上下文的其他方式也是如此:“example”,"Home".
当我 select 另一个控制器时出错,比方说:
@Html.ActionLink("GoToErrorPage", "NotFound", "Error") // error page
这个link的结果是,它只是连接到主页。它没有转到正确的页面。
我想使用 URL 连接到所有页面(在其他控制器中也是如此),例如:
原始 url 的样子(在 RouteConfig 中更改之前)
问题:
我需要如何配置RouteConfig?
如何设置之前不需要输入控制器 url?
中的动作
- 如何正确设置 ActionLink?
您的两条路线实际上是相同的,因为它们都匹配具有 2 个路段的任何 url。如果您希望能够在不指定控制器名称的情况下导航到一个方法,那么您将需要为每个方法创建特定的路由。例如,如果您想使用 ../Request
或 ../Request/1
导航到 HomeController
的 Request(int? id)
方法,那么您需要
routes.MapRoute(
"Request",
"Request/{id}",
new { controller = "Home", action = "Request", id = UrlParameter.Optional }
);
并且该路由必须放在默认路由之前
然后在视图中 @Html.ActionLink("Request Page", "Request", "Home")
将生成 ../Request
的 url 并转到 HomeController
Request()
方法