2011-09-09 17 views
20

Tengo dos preguntas relacionadas con vistas parciales ...MvC3 - el uso de vistas parciales en un área diferente

  1. Cuándo utilizar vistas parciales vs métodos @helper, he utilizado tanto indistintamente y le gustaría obtener más consistente en su uso de . ¿Qué hacen chicos?

  2. Cómo hacer referencia a una vista parcial desde otra área.

Tengo un área llamada admin y tengo una vista parcial en el directorio de Vistas normal. ¿Cómo lo uso? He intentado lo siguiente que no funciona, ya que no se puede encontrar.

@Html.Partial(VirtualPathUtility.ToAbsolute("~/Views/ControllerName/_PartialView"), 
Model) 

otra he intentado -

@Html.Partial("~/Views/ControllerName/_PartialView", Model) 

Respuesta

34

No estoy seguro de si se refiere a ayudantes HTML o ayudantes de afeitar cuando se dice "ayudantes" En cualquier caso, sólo crean ayudantes HTML cuando es un elemento pequeño e individual como un control.

Si te refieres a los ayudantes de Razor, entonces son diferentes de los Partials en que puedes llamarlos como funciones, pasando los parámetros que quieras. Parciales están atrapados en gran medida con el sistema de "modelo" (y, por supuesto Temporal/ViewData/bolsa.

Es todo acerca de cómo desea trabajar con el código.

En cuanto a su parcial. Usted tiene que incluir la sufijo.

@Html.Partial("~/Views/ControllerName/_PartialView.cshtml", Model) 
+2

dulce el sufijo fue lo que me faltaba! – MoXplod

26

Desde el interrogador le preguntó acerca de las áreas que aquí está cómo hacerlo en un área

@Html.Partial("~/Areas/Store/Views/Pages/Checkout.cshtml") 
+0

esto parece ser necesario incluso dentro del área. Nunca he tenido suerte con ../ .. escriba rutas relativas, pero si hay una manera de hacerlo, estaría interesado en escuchar –

+2

Dentro de la misma área solo "PrivacyPolicy.cshtml" funcionará si está utilizando el directorio estándar estructura como MVC buscará la estructura de directorio esperada. No se supone que las rutas relativas funcionen AFAIK, probablemente porque no está claro en qué se relaciona debido a la forma dinámica en que MVC busca las rutas. Es decir. ¿Comenzaría enraizado en Área, o en Área/Vistas/o/Área/Vistas/Nombre del controlador /? Por lo tanto, es un nombre de archivo solo para algo en la estructura de directorios esperada, o una ruta completa desde la raíz de la aplicación, como en su respuesta. – AaronLS

+0

También modifiqué mi buscador de vistas predeterminado (o como se llame), así que es posible que rompí algunos comportamientos predeterminados en el camino, pero de esta manera funciona si te quedas atascado/frustrado –

1

sólo estoy dando ejemplo concreto y simple de lo que estoy tratando de hacer. Necesito poder desconectarme de una página de área usando la vista parcial ubicada en la carpeta compartida principal. Esto es lo que hice:

  1. En el área de visualización que hacen referencia a la vista parcial por

    <div class="float-right"> 
         <section id="login">    
          **@Html.Partial("~/Views/Shared/_LoginPartial.cshtml")** 
         </section> 
        </div> 
    
  2. En la carpeta compartida principal donde se encontraba el código _LoginPartial añadí {new = area ("")}, a partir de:

    using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm", @class = "navbar-right" })) 
    

    a:

    using (Html.BeginForm("LogOff", "Account", **new { area = "" },** FormMethod.Post, new { id = "logoutForm", @class = "navbar-right" })) 
    

Espero que ayude de alguna manera!

0

Otra opción es hacer que la vista parcial que desea compartir entre las áreas COMPARTIDAS.

Así que lo pones en la carpeta principal ~/Views/Shared /, p.

~/Views/Shared/_MyPartialView.cshtml. 

A continuación, puede hacer referencia a ella desde cualquier área diciendo

@Html.Partial("_MyPartialView") 
Cuestiones relacionadas