Dot-Net
_ViewStart.cshtml 中的 RenderSection() 問題
我在 _Layout.cshtml 中截斷了以下程式碼
<div id="sub-navig-container"> @RenderSection("subNavig") </div> <div id="text-content"> @RenderBody() </div>當我添加到我的視圖中時
@section subNavig { //some code }它工作得很好,但是當我在 _ViewStart 中寫這個時出現錯誤: 目前上下文中不存在名稱“DefineSection”
請解釋原因,如果可能的話,告訴我如何解決這個問題
_ViewStart 是一個特殊視圖,它派生自其他視圖,
ViewStartPage而不是WebViewPage其他視圖派生自該視圖。而且這個ViewStartPage類沒有DefineSection方法。所以你不能在這個文件中定義部分。您可以直接在佈局中為該部分提供預設內容:<div id="sub-navig-container"> @if (!IsSectionDefined("subNavig")) { // some default code } else { // render the code that was overridden in the child view @RenderSection("subNavig") } </div>
假設如果在 ViewStart 類中定義了 RenderSection,那麼 Razor 視圖引擎如何知道您正在渲染的部分?RenderSection 在設計上只消耗視圖使用它們立即定義的部分。由於 ViewStart 在任何視圖請求的程式碼執行之前執行,這就是它在那裡不可用的原因。
這是設計使然。目前 Razor 佈局只能使用(渲染)由使用它們的視圖立即定義的部分。您不能擁有佈局頁面的層次結構,並且在最外層佈局中使用最內層視圖中定義的部分。
