大侠们好,麻烦帮忙解说下,mvc路由规则配置的问题,就是我想实现访问的地址栏中不要带有控制器的名称 直接就是action的名字 比如http://localhost:1681/index 如果所有的action都在一个控制器里我知道怎么实现这种效果,但现在是有多个控制器,路由规则改如何配置?
例如两个控制器 Home 、Account分别对应的action有index和login
如果实现这样访问的url http://localhost:1681/index
http://localhost:1681/login
我觉得只能在路由前面把index 和login之类的加上
routes.MapRoute(
name: "Default",
url: "index",
defaults: new { controller = "Home", action = "Index" }
);
routes.MapRoute(
name: "Default",
url: "login",
defaults: new { controller = "Accoun", action = "login"}
);
其他的在下面正常写
那如果说 每个控制器下有多个action呢 这样也可以吗
还请大侠再帮忙说下,如果说有多个控制器并且每个控制器下对应多个action,该如何处理?
可以这样写 自己建个小项目 测试玩玩
MVC路由匹配规则是按照路由注册顺序的,一旦有匹配的会立即返回,所以你注意你的路由注册顺序
针对你需要自定义路由。在默认路由之前注册你的自定义路由,路由名称不能相同,1L的注册名称相同
默认情况MVC是路由访问规则是{controller}/{action}/{id}
如果你单纯的想通过{action}访问到A的action则需要定义一个路由.指定其的controller
如:
routes.MapRoute(
name: "action_a",
url: "actionA",
defaults: new { controller = "Acontroller", action = "actionA"}
);
当然如果你的B也有同名的action则访问不到了,只能通过/B/action 去访问B的这个action了