Asp.net

RenderBody() 和 RenderSection() 必須在每個子佈局上?

  • August 19, 2013

我有三個簡單的佈局,

_Layout.cshtml(這是基本佈局)

@RenderSection("something", required: false)
@RenderBody()

_Main.cshtml

@{
   Layout = "~/Views/Shared/_Layout.cshtml";
}
@section something {
  Hey I'm actually on the _Main layout.
}

索引.cshtml

@{
   Layout = "~/Views/Shared/_Main.cshtml";
}

當我嘗試在操作中呈現索引視圖時,出現此錯誤,

尚未為佈局頁面“~/Views/Shared/_Main.cshtml”呼叫“RenderBody”方法。

但是等等,_Main.cshtml有一個父佈局已經有一個RenderBody(). 所以我錯了,我必須呼叫RenderBody()每個子佈局嗎?

是的,無論嵌套如何,每個佈局頁面都應該包含 RenderBody。

@RenderBody用作引擎的佔位符,以了解使用佈局頁面將視圖內容放置在何處。

引用自:https://stackoverflow.com/questions/18323268