Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto manualmente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale.
Traduzione
Originale

Creazione di una visualizzazione MVC ASP.NET mediante chiamate a più azioni

Il modo consueto per creare una visualizzazione in MVC ASP.NET consiste nel chiamare un metodo di azione che utilizza il modello per preparare i dati della visualizzazione. Il metodo di azione chiama quindi il metodo View del controller per creare la visualizzazione. Può tuttavia essere utile chiamare metodi di azione diversi per creare le diverse parti di una visualizzazione. Ad esempio, è possibile avere una pagina che visualizza le ultime notizie, informazioni meteorologiche e sportive. In tal caso, potrebbe essere utile avere un metodo di azione che gestisce le notizie, un altro che gestisce il tempo e un terzo che gestisce lo sport. Ciò consente di eseguire il rendering di visualizzazioni diverse in condizioni diverse o di suddividere visualizzazioni complesse in parti più piccole e maneggevoli.

In questo argomento viene illustrato come chiamare metodi di azione dall'interno di una visualizzazione (visualizzazione padre) che creano sottosezioni (visualizzazioni figlio) della visualizzazione.

Una visualizzazione padre è una visualizzazione che contiene chiamate a metodi di azione che restituiscono visualizzazioni figlio. La visualizzazione padre contiene la maggior parte del codice HTML per la pagina di cui è stato eseguito il rendering. Una visualizzazione figlio contiene solo il markup richiesto per una singola sezione della visualizzazione.

Ad esempio, una visualizzazione figlio che crea un elenco potrebbe contenere solo il codice HTML per l'elenco, come nell'esempio seguente:

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

Ogni altro markup (il corpo, le intestazioni e così via) sarebbe contenuto nella visualizzazione padre.

MVC ASP.NET fornisce metodi di supporto HTML (metodi di estensione) che eseguono il rendering della maggior parte dei tipi di elementi HTML, ad esempio form e collegamenti, e che semplificano attività comuni quali la convalida dell'input. Sono disponibili due helper HTML per il rendering delle visualizzazioni figlio: Action e RenderAction. Questi helper HTML si trovano nella classe ChildActionExtensions.

Il metodo Action restituisce la visualizzazione figlio come stringa, della quale può essere eseguito direttamente il rendering. Il metodo RenderAction esegue il rendering della visualizzazione figlio sul posto.

Ad esempio, si supponga di disporre di una visualizzazione figlio denominata ChildList costituita dal codice HTML mostrato nella sezione precedente. Il controller contiene il metodo di azione seguente per l'esecuzione del rendering della visualizzazione figlio:

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

Si noti che nel controller non vi è alcuna modalità specifica per eseguire il rendering di una visualizzazione padre o figlio. Si esegue il rendering di una visualizzazione padre e quest'ultima esegue a sua volta il rendering delle visualizzazioni figlio necessarie.

Per chiamare il metodo di azione ed eseguire il rendering della visualizzazione figlio dalla visualizzazione padre, è possibile utilizzare il metodo di supporto Action o RenderAction, come mostrato nell'esempio seguente:

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

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

Si noti che poiché il metodo di supporto Html.Action restituisce una stringa, è richiesto il segno di uguale (=).

È possibile chiamare lo stesso metodo di azione da più posti nella visualizzazione padre e passare parametri per specificare l'oggetto del rendering. Sia Action che RenderAction dispongono di overload di metodi che accettano un oggetto che contiene coppie di nomi di parametro e valori. Nell'esempio seguente viene illustrato il markup per il metodo RenderAction che chiama il metodo di azione Display. In questo caso, viene passato un oggetto anonimo che contiene valori per il nome della visualizzazione figlio di cui eseguire il rendering per quella sezione. Il markup esegue il rendering di una sezione "notizie" (news) seguita da una sezione "tempo" (weather).

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

Il metodo di azione Display può assumere la forma illustrata nell'esempio seguente:

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

È possibile chiamare un metodo di azione contenuto in un controller diverso da quello corrente. A tale scopo, si chiama un overload del metodo RenderAction che consente di specificare il nome del metodo di azione e il controller da utilizzare. Nell'esempio seguente viene illustrato il markup che chiama il metodo di azione Display della classe SectionController. Il primo parametro (una stringa) è il nome del metodo di azione e il secondo parametro (anch'esso una stringa) è il nome del controller.

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

Se il metodo di azione di cui si necessita si trova in un'altra area, è possibile passare il nome dell'area in un oggetto come mostrato di seguito:

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

Tramite un overload diverso del metodo RenderAction, è possibile richiamare anche un controller diverso in un'area diversa.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft