我有一个局部视图,其中包含一个带有benner的div,我每周更换一次。 此横幅嵌入在具有相同布局的10页中。
提供一个像Index.cshtml或AboutUs.cshtml的页面,这两个页面都是部分视图,并且有一个laypout _Layout.cshtml我的问题是:
我可以在Index.cshtml或AboutUs.cshtml中使用呈现Banner.cshtml的代码吗?
类似的东西:
在Index.cshtml或AboutUs.cshtml中我有@ Html.Renderbanner(“banner.cshtml”);
答案 0 :(得分:6)
是的,
@{ Html.RenderPartial("_Banner"); }
在您的共享视图文件夹中,添加部分视图并将其命名为_Banner.cshtml
答案 1 :(得分:1)
当然,你总是可以:
@Html.Partial("Banner")
从任何视图或部分视图。这将在您调用此帮助程序的位置呈现Banner.cshtml
部分。
答案 2 :(得分:1)
使用@ Html.RenderPartial(“YourViewName”);
答案 3 :(得分:0)
首先,只是为了澄清:在您的方案中,Index和AboutUs是否真的是部分视图?那可能 改变我的建议,但通常我会看到三个选项:
Razor Helper ,使用以下代码在App_Code中创建Banner.cshtml:
@helper Show(){
<img src="mybanner.png"/>
}
然后调用Index.cshtml:
@Banner.Show()
Html Helper Extension ,这里有点矫枉过正(参见网上教程)
部分视图:创建“_MyBanner.cshtml”并在Index.cshtml中使用以下内容:
@Html.Partial("_MyBanner");
(如果Index和AboutUs也是部分视图,那么第3个可能会很棘手,但我会选择1个。)
注意:Html.Partial和Html.RenderPartial之间存在差异。后者直接写入输出流,并要求您在括号中调用它。在MVC AFAIK中,最佳做法是使用Html.Partial。
答案 4 :(得分:0)
您可以在layout.cshtml
中创建RenderSection @if (IsSectionDefined("Sidebar"))
{
<div id="page">
<!-- end #content -->
<div id="content">
@RenderBody()
</div>
<div id="sidebar">
@RenderSection("Sidebar", required: false)
</div>
<div style="clear: both;">
</div>
</div>
<!-- end #page -->
<!-- end #sidebar -->
}
else
{
<div id="page">
<!-- end #content -->
<div id="content2">
@RenderBody()
</div>
<div style="clear: both;">
</div>
</div>
<!-- end #page -->
<!-- end #sidebar -->
}
如果你需要在about.cshtml中看到这个部分
使用
@section Sidebar{
@Html.Partial("_yourbanner")
}
如果你不需要横幅,请不要包含它