路由到除默认索引以外的其他操作

时间:2018-09-13 09:25:49

标签: c# asp.net-mvc asp.net-mvc-5 asp.net-mvc-routing

我已经搜索了很长时间,但是在这种情况下,我没有找到答案。

我有一个HomeController,并且 route.config 中的默认路由如下:

routes.MapRoute(
    name: "Default",  
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

所以; http://localhost:36690/Home自动调用Index

我也有一个MyController方法的Index(这是 route.config 中的自定义路由),可以编写http://localhost:36690/My并起作用。

但是我想有一个自定义路线 ,而没有任何 Index

如果我请求localhost:36690/New,则应调用BASIC

所以我尝试了以下操作:

routes.MapRoute(
    "New",
    "{controller}/{action}",
    new { controller = "New", action = "Basic" }
);

但是它会忽略我的默认操作“基本”并抛出错误:

  

“ /”应用程序中的服务器错误。无法找到该资源。 “

1 个答案:

答案 0 :(得分:0)

您可以添加专门用于该控制器的另一条路由。

routes.MapRoute(
    name: "New",
    url: "New/{action}",
    defaults: new { controller = "New", action = "Basic" }
);

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

这样,当调用/New时,它将默认为NewController.Basic