asp.net-mvc – T4MVC @ Url.Action(MVC.Controller.Action())渲染“?Area =”QueryString中的参数

我将一个菜单从部分动作直接转换到布局,使用:

@Html.Action(MVC.Menu.Index())

此操作决定要渲染哪个菜单。例如,一个公共菜单部分。在这些部分中,我也使用T4MVC渲染链接:

<ul id="navHolder">
<li class="level1">
    <ul class="mainMenu">
        <li><b>@Html.ActionLink("Welcome", MVC.Home.Index())</b>
           ... 

由于某些原因,T4MVC提供的Urls最后包括“?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”拉入,则该参数不会被渲染,并且链接是干净和正确的。 (我不想把它作为一个部分,所以请不要提出这个建议;)

之前有任何人会遇到这个吗?

这里有一些奇怪的事情,我想知道是否有一些MVC错误在根。即使没有使用T4MVC,如果你写:

@Html.ActionLink("Welcome", "Index", "Home", new { Area = "" }, null)

在常规视图中,这不会产生虚假的区域=,而在一个Html.Action调用它。我需要问团队的人。

现在,您可以通过在t4mvc.tt中删除此行(围绕第310行)解决方法:

<# if (MvcVersion >= 2) { #>result.RouteValueDictionary.Add("Area", area ?? "");<# } #> 
http://stackoverflow.com/questions/6755729/t4mvc-url-actionmvc-controller-action-renders-area-parameter-in-queryst

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:asp.net-mvc – T4MVC @ Url.Action(MVC.Controller.Action())渲染“?Area =”QueryString中的参数