默认情况下路由到 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
我已经搜索了很长时间,但是对于这种情况我没有找到答案。
我有一个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