默认情况下路由到索引以外的其他操作

问题描述 投票:3回答:1

我已经搜索了很长时间,但对于这种情况我找不到答案。

我有一个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(以及它在route.config中的自定义路由)和Index方法,只需编写http://localhost:36690/My就行了。

但我希望有一个没有任何Index的自定义路线。

如果我要求localhost:36690/New,它应该调用BASIC

所以我尝试了以下方法:

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

但它忽略了我的默认操作'Basic'并抛出错误:

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

c# asp.net-mvc asp.net-mvc-5 asp.net-mvc-routing
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.