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

Visualizzazioni e rendering dell'interfaccia utente nelle applicazioni ASP.NET MVC

Il framework di MVC ASP.NET supporta l'utilizzo di un motore di visualizzazione per la generazione di visualizzazioni (interfaccia utente). Per impostazione predefinita, il framework di MVC ASP.NET utilizza tipi personalizzati (ViewPage, ViewMasterPage e ViewUserControl) che ereditano dalla pagina ASP.NET (con estensione aspx), dalla pagina master (con estensione master) e dai tipi di controllo utente (con estensione ascx) esistenti come visualizzazioni.

Nel flusso di lavoro tipico di un'applicazione Web MVC i metodi di azione del controller gestiscono una richiesta Web in ingresso. Questi metodi di azione utilizzano i valori dei parametri in ingresso per eseguire il codice dell'applicazione e per recuperare o aggiornare oggetti del modello di dati da un database. I metodi selezionano quindi una visualizzazione che esegue il rendering di una risposta per un browser.

Nel modello MVC (Model-View-Controller) le visualizzazioni sono designate esclusivamente all'incapsulamento della logica di presentazione. Esse non devono contenere la logica dell'applicazione o il codice di recupero del database. Tutta la logica dell'applicazione deve essere gestita dal controller. Una visualizzazione esegue il rendering dell'interfaccia utente appropriata utilizzando i dati passati dal controller. Questi dati vengono passati a una visualizzazione da un metodo di azione del controller tramite il metodo View.

NotaNota:

La cartella Views rappresenta la posizione consigliata per le visualizzazione nella struttura di progetto Web di MVC.

Nell'esempio seguente viene illustrata la modalità di rendering di una visualizzazione in una classe controller.

public ActionResult Categories()
{
    List<Category> categories = northwind.GetCategories();
    return View(categories);
}

Nell'esempio il parametro passato nella chiamata al metodo View è un elenco di oggetti Category passati alla visualizzazione. Il metodo View chiama il motore di visualizzazione che utilizza i dati nell'elenco per eseguire il rendering per la visualizzazione e visualizzarla nel browser.

Una pagina di visualizzazione è un'istanza della classe ViewPage che eredita dalla classe Page e implementa l'interfaccia IViewDataContainer. La classe ViewPage definisce una proprietà ViewData che restituisce un oggetto ViewDataDictionary. Questa proprietà contiene i dati che devono essere visualizzati dalla visualizzazione.

È possibile creare una pagina di visualizzazione utilizzando i modelli disponibili in un progetto Visual Studio per un'applicazione Web ASP.NET. Per impostazione predefinita, le visualizzazioni sono pagine Web ASP.NET di cui viene eseguito il rendering dal framework di MVC. Il framework di MVC utilizza il routing degli URL per determinare l'azione del controller da richiamare. Le visualizzazioni di cui eseguire il rendering vengono quindi stabilite dall'azione del controller.

Nell'esempio seguente viene illustrato il markup della pagina Index.aspx. Questa pagina è una delle visualizzazioni predefinite che vengono generate quando si crea un nuovo progetto MVC in Visual Studio. Per convenzione, alla visualizzazione predefinita di un'applicazione MVC ASP.NET viene assegnato il nome "Index".


<h2><%= Html.Encode(ViewData["Message"]) %></h2>
<p>
    To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.
</p>


La direttiva @ Page contiene l'attributo Inherits che definisce la relazione tra l'applicazione e la visualizzazione. Per impostazione predefinita, il valore dell'attributo Inherits utilizza il modello seguente: Application.Views.Controller.ViewPage

Se si sta utilizzando una visualizzazione fortemente tipizzata, l'attributo Inherits utilizza il modello seguente:

Application.Views.Controller.ViewPage<Type>

In modo analogo alle pagine ASP.NET nelle applicazioni basate su Web Form, le visualizzazioni di pagine ASP.NET (file con estensione aspx) possono utilizzare pagine master per definire un layout e una struttura coerenti. In un sito tipico la pagina master viene associata a una pagina contenuto nella direttiva @ Page della pagina contenuto. È inoltre possibile utilizzare pagine master dinamiche, ovvero è possibile assegnare una pagina master in fase di esecuzione, quando si chiama il metodo View della classe Controller.

Nell'esempio seguente viene illustrata la visualizzazione Site.master rappresentata dalla pagina master che viene generata quando si crea un nuovo progetto MVC in Visual Studio.


<%@ Master Language="VB" Inherits="System.Web.Mvc.ViewMasterPage" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title>
    <link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
</head>

<body>
    <div class="page">

        <div id="header">
            <div id="title">
                <h1>My MVC Application</h1>
            </div>

            <div id="logindisplay">
                <% Html.RenderPartial("LogOnUserControl")%>                
            </div> 

            <div id="menucontainer">

                <ul id="menu">              
                    <li><%= Html.ActionLink("Home", "Index", "Home")%></li>
                    <li><%=Html.ActionLink("About", "About", "Home")%></li>
                </ul>

            </div>
        </div>

        <div id="main">
            <asp:ContentPlaceHolder ID="MainContent" runat="server" />

            <div id="footer">
            </div>
        </div>
    </div>
</body>
</html>



<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title>
    <link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
</head>

<body>
    <div class="page">

        <div id="header">
            <div id="title">
                <h1>My MVC Application</h1>
            </div>

            <div id="logindisplay">
                <% Html.RenderPartial("LogOnUserControl"); %>
            </div> 

            <div id="menucontainer">

                <ul id="menu">              
                    <li><%= Html.ActionLink("Home", "Index", "Home")%></li>
                    <li><%= Html.ActionLink("About", "About", "Home")%></li>
                </ul>

            </div>
        </div>

        <div id="main">
            <asp:ContentPlaceHolder ID="MainContent" runat="server" />

            <div id="footer">
            </div>
        </div>
    </div>
</body>
</html>


Una visualizzazione parziale consente di definire una visualizzazione di cui verrà eseguito il rendering in una visualizzazione padre. Le visualizzazioni parziali vengono implementate come controlli utente ASP.NET (con estensione ascx).

La creazione di un'istanza di una visualizzazione parziale consente di ottenere una copia dell'oggetto ViewDataDictionary che è disponibile per la visualizzazione padre. La visualizzazione parziale dispone pertanto dell'accesso ai dati della visualizzazione padre. Se la visualizzazione parziale determina l'aggiornamento dei dati, tali aggiornamenti avranno tuttavia effetto solo sull'oggetto ViewData della visualizzazione parziale. I dati della visualizzazione padre non vengono modificati.

La creazione di visualizzazioni comporta l'esecuzione di molte attività ripetitive o che richiedono particolari conoscenze del framework di MVC. Per rispondere alle esigenze di questi scenari e semplificare il rendering di HTML, il framework di MVC include classi e membri helper. La progettazione per le classi helper è estensibile, consentendo di aggiungere classi e membri helper personalizzati.

Il framework di MVC include gli helper seguenti:

  • Helper per form, utilizzati per elementi del form quali pulsanti di opzione, caselle di riepilogo, pulsanti di selezione, caselle di testo, aree di testo, contenuto nascosto e campi di password.

  • Helper per URL, che consentono di generare URL per il routing.

  • Helper per HTML, che includono funzioni per la gestione di stringhe HTML, ad esempio Encode, Decode, AttributeEncodee RenderPartial.

È possibile accedere agli helper per il rendering basato sul codice utilizzando proprietà che vengono aggiunte alle classi ViewPage, ViewUserControl e ViewMasterPage.

Titolo

Descrizione

Rendering di un form mediante helper HTML

Viene spiegato come utilizzare i metodi helper HTML per il rendering di un form in una visualizzazione.

Passaggio di dati in un'applicazione MVC ASP.NET

Viene spiegato come passare i dati da un controller a una visualizzazione.

Procedura dettagliata: utilizzo di helper basati su modelli per visualizzare i dati in ASP.NET MVC

Viene illustrato come compilare automaticamente un'interfaccia utente basata su un modello di dati.

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

Viene spiegato come creare una visualizzazione padre contenente più visualizzazioni figlio.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2015 Microsoft