私が使用して、レイアウトに直接部分的なアクションからメニューをレンダリングしています:T4MVC @ Url.Actionは(MVC.Controller.Action())レンダリング "?エリア=" のQueryString
@Html.Action(MVC.Menu.Index())
このどのメニュー部分をレンダリングするかを決定します。たとえば、パブリックメニューの一部です。 NO
<ul id="navHolder">
<li class="level1">
<ul class="mainMenu">
<li><b><a href="/home/index?Area=">Welcome</a></b>
...
私が持っている:、T4MVCによってレンダリングURLが含ま末尾に「エリア=?」何らかの理由
<ul id="navHolder">
<li class="level1">
<ul class="mainMenu">
<li><b>@Html.ActionLink("Welcome", MVC.Home.Index())</b>
...
:これらのパーシャルの中で、私はまた、リンクをレンダリングするためにT4MVCを使用しています私のプロジェクトの領域と私は "IncludeAreasToken"設定をfalseにしました。奇妙なことに、これは "@ Html.Action"を使ってパーシャルをレンダリングする場合にのみ発生します。 "@ Html.Partial"としてプルすると、パラメータはレンダリングされず、リンクはクリーンで正しいものになります。 (私は部分的にそれをレンダリングしたくないので、それを示唆として提供してはいけません)
これまで誰もこれに遭遇していますか?
ありがとう - それは助けた。 –
領域が供給されたかどうかを確認するためのチェックが追加されました。もしそうなら、それを辞書に追加します: 'if(!String.IsNullOrWhiteSpace(area)){result.RouteValueDictionary.Add(" Area "、area ??" );} ' –
@BradR:この変更の問題は、それが必ずしも正しいとは思わないということです。エリアビューにあり、トップレベル(非エリア)ビューへのリンクを生成しようとしているときに、空のエリアを渡すことは、現在のエリアを「エスケープ」するための正しいことです。しかし、あなたの小切手でそれは起こらないでしょう。 –