我正在将部分操作中的菜单直接渲染到布局,使用:
@Html.Action(MVC.Menu.Index())
此操作确定要渲染哪个菜单部分。例如,公共(public)菜单部分。在这些部分中,我还使用 T4MVC 来呈现链接:
<ul id="navHolder">
<li class="level1">
<ul class="mainMenu">
<li><b>@Html.ActionLink("Welcome", MVC.Home.Index())</b>
...
由于某种原因,T4MVC 渲染的 URL 末尾包含“?Area=”:
<ul id="navHolder">
<li class="level1">
<ul class="mainMenu">
<li><b><a href="/home/index?Area=">Welcome</a></b>
...
我的项目中没有任何区域,并且我已将“IncludeAreasToken”设置设置为 false。奇怪的是,只有当我使用“@Html.Action”渲染部分时才会发生这种情况 - 如果我将其作为“@Html.Partial”拉入,则不会渲染参数并且链接是干净且正确的。 (但我不想将其呈现为部分内容,因此请不要将其作为建议提供;)
有人遇到过这种情况吗?
最佳答案
我以一种非常简单的方式解决这个问题,只需添加到不在区域空区域 route 的所有路线,如下所示:
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", area = "", id = UrlParameter.Optional });
关于asp.net-mvc - T4MVC @Url.Action(MVC.Controller.Action()) 渲染 QueryString 中的 "?Area="参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6755729/