2011-10-14 17 views
6

Tengo una vista parcial que consiste en un div con un benner que cambio una vez a la semana. Este banner está incrustado en 10 páginas que tienen el mismo diseño.mvc3 incrusta una vista parcial dentro de otra

Dar una página como Index.cshtml o AboutUs.cshtml, siendo ambos puntos de vista parciales y tener la laypout _Layout.cshtml mi pregunta es:

¿Puedo Inser código en Index.cshtml o AboutUs.cshtml que hace Banner .cshtml?

algo como:

dentro Index.cshtml o AboutUs.cshtml tengo @ Html.Renderbanner ("banner.cshtml");

Respuesta

6

Sí,

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

En su carpeta de visión compartida, añadir su vista parcial y llamarlo _Banner.cshtml

0

Claro, usted podría siempre:

@Html.Partial("Banner") 

desde cualquier punto de vista o vista parcial. Esto hará que el Banner.cshtml sea parcial en el lugar donde llamó a este ayudante.

1

Use @ Html.RenderPartial ("YourViewName");

0

Primero, solo para aclarar: ¿Index y AboutUs son realmente vistas parciales en su escenario? Eso puede cambiar mi consejo, pero normalmente veo tres opciones:

  1. Razor Helper, crear Banner.cshtml en App_Code con el siguiente código:

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

    A continuación, llame en Index.cshtml : Extensión

    @Banner.Show() 
    
  2. HTML ayudante , Un poco exagerado probablemente aquí (ver tutorial en la web)

  3. Vista parcial: Crear "_MyBanner.cshtml" y utilice el siguiente en Index.cshtml:

    @Html.Partial("_MyBanner"); 
    

(Número 3 es el que podría ser complicado si Index y AboutUs también son vistas parciales, pero 1 sería el que elegiría)

Nota: Hay una diferencia entre Html.Partial y Html.RenderPartial. Este último escribe directamente en la secuencia de salida y le pedirá que lo llame entre paréntesis. En MVC AFAIK es una buena práctica usar Html.Partial.

0

Se puede crear un RenderSection en layout.cshtml

@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 --> 

    } 

si necesita ver el apartados dentro en aproximadamente.cshtml

uso

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

si usted no necesita la bandera no lo incluya

Cuestiones relacionadas