我创建了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中手动创建上述内容的情况下解决这个问题。
谢天谢地 那仁
答案 0 :(得分:1)
如果我理解正确: - 你的RenderBody视图是非局部的但是 - 您的Adv1,2是部分观点吗?
如果是这样 - 如果你在div容器中调用@ Html.RenderPartial(“adv1”),它应该可以工作。
答案 1 :(得分:1)
如果您依靠_ViewStart.cshtml
将_Layout.cshtml
应用于您的部分,请不要。尝试在初始代码块中明确设置Layout
。
我在上一个项目中为一堆自定义编辑器模板使用了嵌套布局,尝试让_ViewStart.cshtml
启动该文件夹就行不通,因为Partials没有执行_ViewStart
。只要我在部分中直接手动指定Layout
就可以了。
就个人而言,我对此很满意 - 这只是一个小麻烦。
所以,举个例子:
(在~/Views/Shared/_PartialLayout.cshtml
)
<div class="partialContainer">
@RenderBody()
</div>
然后示例部分如下:
{
Layout = "~/Views/Shared/_PartialLayout.cshtml";
}
<p>Hello World!</p>
(请注意,您必须明确设置布局,因为部分内容不处理_ViewStart
)
在运行时 - 此部分实际呈现:
<div class="partialContainer">
<p>Hello World!</p>
</div>
我相信你想要实现的目标。
请注意,部分视图布局的实际位置并不重要,您可以根据需要将其放在共享文件夹中,也可以将其放在特定控制器的视图文件夹中 - 只要您正确地解决它在部分视图分配Layout
成员时,它会没事的。
另一个SO:Correct way to use _viewstart.cshtml and partial Razor views?的答案实际上引用了Razor中的早期错误,它利用了PartialViewResults不执行ViewStart的事实。
答案 2 :(得分:1)
如果我已正确理解您的问题,使用asp.net mvc“sections”可能是您的情况的解决方案。
答案 3 :(得分:0)
您在Controller类的View中有什么回报? 您是否返回View或PartialView(m)? 如果你回复View(m)并渲染为Partial,如果我记得正确则可能导致一些奇怪的东西..