Exportar (0) Imprimir
Expandir todo
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original.
Traducción
Original

Crear una vista de ASP.NET MVC llamando a varias acciones

La manera típica de crear una vista en ASP.NET MVC es llamar a un método de acción que utiliza el modelo para preparar los datos de la vista. A continuación, el método de acción llama al método View del controlador para crear la vista. Sin embargo, puede ser conveniente llamar a métodos de acción diferentes para crear las distintas partes de una vista. Por ejemplo, puede haber una página que muestre las últimas noticias, el tiempo y la información deportiva. En ese caso, podría ser útil tener un método de acción que controle las noticias, otro para el tiempo y un tercero para los deportes. De este modo, es posible presentar vistas distintas en condiciones diferentes o desglosar vistas complejas en elementos más pequeños y fáciles de controlar.

En este tema se describe cómo llamar desde una vista (vista primaria) a métodos de acción que crean subsecciones (vistas secundarias) de la vista.

Una vista primaria es aquella que contiene las llamadas a los métodos de acción que devuelven las vistas secundarias. La vista primaria contiene la mayoría del HTML de la página presentada. Una vista secundaria contiene solo el marcado que se requiere para una sección de la vista.

Por ejemplo, una vista secundaria que crea una lista podría contener únicamente el HTML de la lista, como en el siguiente ejemplo:

<ul>
  <li>Item 1</li>
  <li>Item 2</li>
  <li>Item 3</li>
</ul>

Todo el marcado restante (el cuerpo, los encabezados, etc.) estaría contenido en la vista primaria.

ASP.NET MVC proporciona métodos auxiliares (métodos de extensión) HTML que presentan la mayoría de los tipos de elementos de HTML, como formularios y vínculos, y que simplifican las tareas frecuentes como la validación de las entradas. Existen dos métodos auxiliares HTML disponibles para presentar vistas secundarias: Action y RenderAction. Estos métodos auxiliares HTML se encuentran en la clase ChildActionExtensions.

El método Action devuelve la vista secundaria como una cadena que, a continuación, se puede presentar directamente. El método RenderAction presenta la vista secundaria en su lugar.

Por ejemplo, supongamos que hay una vista secundaria denominada ChildList, compuesta del HTML mostrado en la sección anterior. El controlador contiene el siguiente método de acción para presentar la vista secundaria:

public ActionResult ChildList()
{
    return View();
}

Tenga en cuenta que en el controlador no hay ninguna manera concreta de presentar una vista primaria o secundaria. Se presenta una vista primaria que, a su vez, presenta las vistas secundarias que necesita.

Para llamar al método de acción y presentar la vista secundaria desde la vista primaria, puede utilizar el método auxiliar Action o el método auxiliar RenderAction, como se muestra en el siguiente ejemplo:

// One alternative (renders a string)
<%= Html.Action("ChildList") %>

//Another alternative (renders in place)
<% Html.RenderAction("ChildList"); %>

Tenga en cuenta que el signo igual (=) es necesario porque el método auxiliar Html.Action devuelve una cadena.

Puede llamar al mismo método de acción desde varios lugares de la vista primaria y pasarle parámetros para especificar lo que se presenta. Action y RenderAction tienen sobrecargas de método que aceptan un objeto que contiene pares de nombres de parámetro y valores. En el siguiente ejemplo se muestra el marcado del método RenderAction que llama al método de acción Display. En este caso, pasa un objeto anónimo que contiene valores del nombre de la vista secundaria que se presentará para esa sección. El marcado presenta una sección de noticias (news) seguida por una sección del tiempo (weather).

<% Html.RenderAction("Display", new { section = "News" }); %>
<% Html.RenderAction("Display", new { section = "Weather" }); %>

El método de acción Display podría tener un aspecto parecido al que se muestra en el ejemplo siguiente:

public ActionResult Display(string section)
{
    return View(section);
}

Puede llamar a un método de acción que esté en un controlador distinto del actual. Para ello, se llama a una sobrecarga del método RenderAction que permite especificar el nombre del método de acción y el controlador que se va a utilizar. En el siguiente ejemplo se muestra el marcado que llama al método de acción Display de la clase SectionController. El primer parámetro (una cadena) es el nombre del método de acción. El segundo parámetro (también una cadena) es el nombre del controlador.

<% Html.RenderAction("Display", "Section"); %>

Si el método de acción que se necesita se encuentra en otra área, se puede pasar el nombre de área en un objeto, como se muestra a continuación:

<% Html.RenderAction("Display", new { area = "Navigation" }); %>

Se puede invocar a un controlador distinto de otra área mediante una sobrecarga diferente del método RenderAction.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft