默认情况下路由到 Index 之外的另一个操作

Routing to another action than Index as default

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

我有一个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' 并抛出错误:

Server Error in '/' Application. The resource cannot be found. "

您可以专门为该控制器添加另一条路线。

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