mvc3在另一个内部嵌入了局部视图

时间:2011-10-14 13:35:15

标签: asp.net-mvc-3

我有一个局部视图,其中包含一个带有benner的div,我每周更换一次。 此横幅嵌入在具有相同布局的10页中。

提供一个像Index.cshtml或AboutUs.cshtml的页面,这两个页面都是部分视图,并且有一个laypout _Layout.cshtml我的问题是:

我可以在Index.cshtml或AboutUs.cshtml中使用呈现Banner.cshtml的代码吗?

类似的东西:

在Index.cshtml或AboutUs.cshtml中我有@ Html.Renderbanner(“banner.cshtml”);

5 个答案:

答案 0 :(得分:6)

是的,

@{ Html.RenderPartial("_Banner"); }

在您的共享视图文件夹中,添加部分视图并将其命名为_Banner.cshtml

答案 1 :(得分:1)

当然,你总是可以:

@Html.Partial("Banner")

从任何视图或部分视图。这将在您调用此帮助程序的位置呈现Banner.cshtml部分。

答案 2 :(得分:1)

使用@ Html.RenderPartial(“YourViewName”);

答案 3 :(得分:0)

首先,只是为了澄清:在您的方案中,Index和AboutUs是否真的是部分视图?那可能 改变我的建议,但通常我会看到三个选项:

  1. Razor Helper ,使用以下代码在App_Code中创建Banner.cshtml:

    @helper Show(){
        <img src="mybanner.png"/>
    }
    

    然后调用Index.cshtml:

    @Banner.Show()
    
  2. Html Helper Extension ,这里有点矫枉过正(参见网上教程)

  3. 部分视图:创建“_MyBanner.cshtml”并在Index.cshtml中使用以下内容:

    @Html.Partial("_MyBanner");
    
  4. (如果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;">
                &nbsp;</div>
        </div>
        <!-- end #page -->
        <!-- end #sidebar -->

    }
    else
    {
        <div id="page">
            <!-- end #content -->
            <div id="content2">
                @RenderBody()
            </div>
            <div style="clear: both;">
                &nbsp;</div>
        </div>
        <!-- end #page -->
        <!-- end #sidebar -->

    }

如果你需要在about.cshtml中看到这个部分

使用

@section Sidebar{
    @Html.Partial("_yourbanner")
}

如果你不需要横幅,请不要包含它