路线中未指定控制器

时间:2016-09-15 08:03:53

标签: asp.net asp.net-mvc url razor html-helper

情况:

我有一个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

此链接的结果是它只是连接到主页。它没有进入正确的页面。

我想用以下网址连接所有页面(在其他控制器中):

  

http://localhost:12345/Request

原始网址的样子(在 RouteConfig 中更改之前)

  

http://localhost:12345/Home/Request

问题:

  1. 如何配置 RouteConfig

  2. 如何设置它,我不需要在之前键入控制器     网址中的操作?

  3. 如何设置ActionLink正确?

1 个答案:

答案 0 :(得分:1)

您的路线实际上都是相同的,因为它们都匹配任何包含2个段的网址。如果您希望能够在不指定控制器名称的情况下导航到方法,则需要为每个方法创建特定路由。例如,如果您要导航到Request(int? id)的{​​{1}}方法,HomeController../Request则需要

../Request/1

并且该路线必须放在默认路线

之前

然后在视图中routes.MapRoute( "Request", "Request/{id}", new { controller = "Home", action = "Request", id = UrlParameter.Optional } ); 将生成@Html.ActionLink("Request Page", "Request", "Home")的网址并转到../Request的{​​{1}}方法