以下代码在正常的 ASP.net MVC 中工作。
Url.Action("actionName", "controllerName", new { Area = "areaName" });
但它在 ASP.net Core 中运行得不太好。区域被识别为查询字符串参数。
我该如何解决?
谢谢你的帮助。
确保您注册的路线如下:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "areaRoute",
// if you don't have such an area named as `areaName` already,
// don't make the part of `{area}` optional by `{area:exists}`
template: "{area}/{controller=Home}/{action=Index}");
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
我可以通过更改路线顺序或更改{area}
是可选的。
-
订单很重要. The
areaRoute
应该是第一位的。不要改变顺序。
-
当生成某个区域的 url 时,如果您还没有这样的区域,请不要更改{area}
是可选的 by {area:exists}
。例如,假设您正在尝试生成一个指向以下区域的 urlMyAreaName
:
Url.Action("actionName", "controllerName", new { Area = "MyAreaName" });
如果没有名为的区域MyAreaName
在你的项目中,你已经创建了该区域optional
by:
routes.MapRoute(
name: "areaRoute",
template: "{area:exists}/{controller=Home}/{action=Index}");
生成的网址将是controllerName/actionName?Area=MyAreaName
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)