【发布时间】:2017-01-23 04:12:48
【问题描述】:
情况:
我有一个 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”。
当我选择另一个控制器时出错了,比如说:
@Html.ActionLink("GoToErrorPage", "NotFound", "Error") // error page
这个链接的结果是它只是连接到主页。它没有进入正确的页面。
我想使用如下 URL 连接到所有页面(也在其他控制器中):
原始 url 的样子(在 RouteConfig 更改之前)
问题:
我需要如何配置 RouteConfig?
如何设置不需要在 url 中的操作?
- 如何正确设置 ActionLink?
【问题讨论】:
-
您的两条路线是相同的(它们可以接受 2 段)。如果你想要特定的路线,它们需要是可区分的。但是,如果您希望能够省略控制器(或标识控制器的东西),那么您需要为应用程序中的每个方法创建一个路由。
-
@StephenMuecke 如何让它们相互区分?或者我如何为每个页面创建一个特定的路由?
-
如果你想用
../Request去HomeController的Request()方法,你需要一个带有url: Request/{id}和defaults: new { controller = "Home", action = "Request", id = UrlParameter.Optional }的特定路由(放在默认路由之前) -
@StephenMuecke 工作!在下面回答这个问题,你就有答案了。
标签: asp.net asp.net-mvc url razor html-helper