我正在研究ASP.NET MVC3
項目。我使用Twitter Bootstrap
作爲我的造型(不知道這是否重要)。我遇到的問題是,Home
控制器的Index.cshtml
視圖與其他頁面的佈局稍有不同(在頂部的附加圖像導航中,一旦用戶選擇他想要去的地方,我不會顯示),但這會導致問題發生我從Index
視圖中刪除此部分到另一個局部視圖_ImageNavigation.cshtml
和我想要做的是呈現這個局部視圖的內容,當Home/Index.cshtml
被打開,並且我想在它也獨立於它之前呈現它@RenderBody()
,所以我得到頁面我想要的方式。如何在給定視圖上渲染html brefore RenderBody()從佈局中被觸發
現在在我_Layout.cshtml
我:
<div id="main">
<div class="container-fluid">
<div class="row">
<div class="col-md-10">@RenderBody() </div>
<div class="col-md-2">
//some static content
</div>
</div>
</div>
所以,我有兩個想法第一 - @RenderBody()
像前右加@RenderPage("~/Views/Shared/_ImageNavigation.cshtml")
:
<div class="row">
@RenderPage("~/Views/Shared/_ImageNavigation.cshtml")
<div class="col-md-10">@RenderBody() </div>
產生我想要的效果,但你可能會猜測_ImageNavigation
呈現在每個不是我想要的頁面上。我只希望它在我的Home/Index.cshtml
上,所以我猜測可能會進行某種檢查,以查看正在加載哪個視圖並僅在正確視圖時才呈現_ImageNavigation
。例如:
if (LoadingView == Home/Index.cshtml)
{
@RenderPage("~/Views/Shared/_ImageNavigation.cshtml")
}
當然,以上只是僞代碼,我不知道是否有可能以及如何進行這樣的檢查。我也想知道在頁面中是否有辦法做到這一點。我試圖將@RenderPage("~/Views/Shared/_ImageNavigation.cshtml")
直接放在我的Home/Index.cshtml
中,但很明顯,這種方式使頁面呈現,就好像代碼直接寫入視圖中一樣,而不是顯式加載。
也許還有其他的方法。這似乎是非常標準的問題,但我似乎找不到合適的解決方案。
感謝您的回答。我放慢了我的評論,因爲我遇到了問題:'@if(IsSectionDefined(「Nav」))''我得到這個錯誤:'以下部分已被定義,但尚未呈現爲佈局頁面。只留下'RenderSection(「Nav」)'解決了這個問題。打開其他頁面時我期待錯誤,但工作正常。我不知道是什麼導致了這一點,但似乎我沒有義務在每個視圖中定義部分以僅使用'RenderSection(「Nav」)'。 – Leron
你可能想使用'RenderSection(「Nav」,false)'。 –
是的,不知道爲什麼,我看到很多例子提示使用'IsSectionDefined()',但在我的情況下只是'RenderSection(「Nav」,false)'是不會導致死亡黃色屏幕的選項。感謝幫助。 – Leron