我添加了一个像这样的自定义路线
routes.MapRoute(
name: "Default",
url: "{coutry}/{lang}/{controller}/{action}",
defaults: new { controller = "Home", action = "Index" }
);
现在我尝试从一个控制器调用一个方法时遇到一些问题,这在添加新路径之前工作正常
<a id="someId" class="link-button" href="../Documents/Create"><span>Create</span></a>
现在我能实现这一目标的唯一方法就是href="EN/us/Documents/Create"
有没有办法为我的客户端保留自定义路由,并且仍然为我的管理员端保持href="../Documents/Create">
方式,这是因为我在管理端开发了几个功能,但现在我必须包括客户端的自定义路由。非常感谢你。
现在有我的路线
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "CustomRoute",
url: "{country}/{lang}/{controller}/{action}",
defaults: new { controller = "Test", action = "Index" }
);
但我只能使用/ ES / es / Test / Index访问CustomRoute ...为什么不采用默认值?
答案 0 :(得分:2)
您只需要在默认路线之后声明自定义路线:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index",
id = UrlParameter.Optional }
);
// SomeOther = someothercontroller
routes.MapRoute(
name: "CustomRoute",
url: "{coutry}/{lang}/{controller}/{action}",
defaults: new { controller = "SomeOther", action = "Index" }
);
答案 1 :(得分:1)
您已将默认的RouteConfig替换为新配置,并且它与此 {coutry} / {lang} / {controller} / {action} 格式的网址匹配。
如果您想接受../Documents/Create
网址,您必须在最后添加默认的RouteConfig。
routes.MapRoute(
name: "CustomRoute",
url: "{coutry}/{lang}/{controller}/{action}",
defaults: new { controller = "Documents", action = "Index" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
同样在锚标记<a id="someId" class="link-button" href="../Documents/Create"><span>Create</span></a>
中,而不是对href
进行硬编码,您可以编写如下内容。
<a id="someId" class="link-button" href="@Url.Action("Create","Documents")><span>Create</span></a>