簡體   English   中英

PartialView不會在_Layout.cshtml RenderBody()部分中輸出

[英]PartialView does not output within the _Layout.cshtml RenderBody() section

我創建了VIEWS和PartialVIEWS,但到目前為止,我已經看到了VIEWS,被渲染/輸出到RenderBody()部分,該部分在_Layout.cshtml中設置

因此,如果我有_Layout.cshtml ...

<div id="container">
    <div id="col1"> 
        <p>Advert1 aliquip</p> 
         </div> 
         <div id="col2outer1"> 
            <div id="col2mid1">                    
                 @RenderBody()
                 <br /><b /> <br />
        </div>
       <div id="col2side1"> 
           <p>Advert2 </p> 
       </div> 
</div>

所有視圖都將在@RenderBody()部分中調用。 這意味着Advert1和Advert2將始終顯示在每個被調用的VIEW上。 但是,當我調用PartialView時,這不會發生。 Advert1和Advert2不會出現。 如何在不在每個PartialView中手動創建上述內容的情況下解決這個問題。

非常感謝Naren

如果我理解正確: - 您的RenderBody視圖是非部分的,但是 - 您的Adv1,2是部分視圖?

如果是這樣 - 如果你在div容器中調用@ Html.RenderPartial(“adv1”),它應該可以工作。

如果您依靠_ViewStart.cshtml_Layout.cshtml應用於部分,請不要。 嘗試在初始代碼塊中明確設置Layout

我使用嵌套布局在我的最后一個項目了一堆的自定義編輯模板,試圖讓_ViewStart.cshtml踢在該文件夾,因為僅僅是行不通的_ViewStart不為局部模板執行。 只要我在部分手動指定Layout就可以了。

就個人而言,我很滿意 - 這只是一個小麻煩。

所以,作為一個例子:

(在~/Views/Shared/_PartialLayout.cshtml

<div class="partialContainer">
@RenderBody()
</div>

然后一個例子部分如下:

{
  Layout = "~/Views/Shared/_PartialLayout.cshtml";
}
<p>Hello World!</p>

(注意,您必須顯式設置布局,因為_ViewStart不會為partials處理)

在運行時 - 這部分將實際呈現:

<div class="partialContainer">
<p>Hello World!</p>
</div>

我認為這是你想要實現的目標。

請注意,部分視圖布局的實際位置並不重要,您可以根據需要將其放在共享文件夾中,也可以將其放在特定控制器的視圖文件夾中 - 只要您在部分視圖中正確地解決它查看Layout成員的分配,一切都會好的。

關於這個問題的答案SO: 使用_viewstart.cshtml和部分Razor視圖的正確方法是什么? 實際上也引用了Razor中的早期錯誤,利用了PartialViewResults不執行ViewStart的事實。

如果我已正確理解您的問題,使用asp.net mvc“sections”可能是您的情況的解決方案。

定義部分

通話部分

您在Controller類中為View返回了什么? 您是否返回View或PartialView(m)? 如果您返回View(m)並渲染為Partial,如果我記得正確則可能導致一些奇怪的東西..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM