Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Esistono tre modi per passare informazioni da un controller a una visualizzazione in ASP.NET MVC 3:
- Oggetto modello fortemente tipizzato.
- Tipo dinamico (uso @model dinamico)
- Uso di ViewBag
Ho scritto una semplice applicazione MVC 3 Top Blog per confrontare e confrontare le visualizzazioni dinamiche e fortemente tipizzata. Il controller inizia con un elenco semplice di blog:
using System.Collections.Generic;
using System.Web.Mvc;
namespace Mvc3ViewDemo.Controllers {
public class Blog {
public string Name;
public string URL;
}
public class HomeController : Controller {
List<Blog> topBlogs = new List<Blog>
{
new Blog { Name = "ScottGu", URL = "http://weblogs.asp.net/scottgu/"},
new Blog { Name = "Scott Hanselman", URL = "http://www.hanselman.com/blog/"},
new Blog { Name = "Jon Galloway", URL = "http://www.asp.net/mvc"}
};
public ActionResult IndexNotStonglyTyped() {
return View(topBlogs);
}
public ActionResult About() {
ViewBag.Message = "Welcome to ASP.NET MVC!";
return View();
}
}
}
Fare clic con il pulsante destro del mouse sul metodo IndexNotStonglyTyped() e aggiungere una visualizzazione Razor.
Assicurarsi che la casella Crea una visualizzazione fortemente tipizzata non sia selezionata . La visualizzazione risultante non contiene molto:
@{
ViewBag.Title = "IndexNotStonglyTyped";
}
<h2>IndexNotStonglyTyped</h2>
On the first line of the Views\Home\IndexNotStonglyTyped.cshtml file, add the model directive and the dynamic keyword.
@model dynamic
Poiché si usa una visualizzazione dinamica e non fortemente tipizzata, intellisense non ci aiuta. Il codice completato è illustrato di seguito:
@model dynamic
@{
ViewBag.Title = "IndexNotStonglyTyped";
}
<h2>Index Not Stongly Typed</h2>
<p>
<ul>
@foreach (var blog in Model) {
<li>
<a href="@blog.URL">@blog.Name</a>
</li>
}
</ul>
</p>
A questo punto verrà aggiunta una visualizzazione fortemente tipizzata. Aggiungere il codice seguente al controller:
public ActionResult StonglyTypedIndex() {
return View(topBlogs);
}
Si noti che è esattamente la stessa visualizzazione restituita(topBlogs); chiamare come visualizzazione non fortemente tipizzata. Fare clic con il pulsante destro del mouse all'interno di StonglyTypedIndex() e selezionare Aggiungi visualizzazione. Questa volta selezionare la classe Modello di blog e selezionare Elenco come modello Scaffold.
All'interno del nuovo modello di visualizzazione si ottiene il supporto intellisense.