所以我有一条默认路线:
routes.MapRoute(
name: "Structures",
url: "Structures/{action}/{id}",
defaults: new { controller = "Structures", action = "Index", id = UrlParameter.Optional }
);
这很有效,正是我想要的。所以看起来我可以手动将url参数更改为我想要的任何模式。那么为什么呢,这不起作用:
routes.MapRoute(
name: "Structures",
url: "s/{action}/{id}",
defaults: new { controller = "Structures", action = "Index", id = UrlParameter.Optional }
);
我知道asp.net默认路由使用{name}控制器模式并提取{name}并将其用作Url但是如果我想自定义url的部分它似乎不起作用控制器名称应该去的地方。
我觉得我的大脑在这个假期上起飞=(
答案 0 :(得分:1)
您的路线将按预期工作。如果没有,它可能是由于您定义路线的顺序(顺序很重要)。来自this article
按照模式的顺序将传入的URL与路由模式进行比较 出现在路线词典中(这就是我们添加的路线图 在我们的RouteConfig.cs文件中。)
成功匹配控制器,操作和的第一个路由 动作参数指向URL中的参数或默认值 定义为路由映射的一部分将调用指定的 控制器和行动。这很重要,需要我们思考 仔细路由,以便不调用错误的处理程序 无意中。