Dynamiczne a silnie typizowane widoki
Autor : Rick Anderson
Istnieją trzy sposoby przekazywania informacji z kontrolera do widoku w ASP.NET MVC 3:
- Jako silnie typizowanego obiektu modelu.
- Jako typ dynamiczny (przy użyciu @model dynamicznego)
- Korzystanie z elementu ViewBag
Napisałem prostą aplikację MVC 3 Top Blog, aby porównać i porównać dynamiczne i silnie typizowane widoki. Kontroler rozpoczyna się od prostej listy blogów:
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();
}
}
}
Kliknij prawym przyciskiem myszy metodę IndexNotStonglyTyped() i dodaj widok Razor.
Upewnij się, że pole Tworzenie silnie typizowanego widoku nie jest zaznaczone. Wynikowy widok nie zawiera zbyt wiele:
@{
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
Ponieważ używamy dynamicznego, a nie silnie typizowanego widoku, funkcja IntelliSense nie pomaga nam. Ukończony kod przedstawiono poniżej:
@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>
Teraz dodamy silnie typizowany widok. Dodaj następujący kod do kontrolera:
public ActionResult StonglyTypedIndex() {
return View(topBlogs);
}
Zwróć uwagę, że jest to dokładnie ten sam widok zwracany (topBlogs); wywołaj jako widok nietypowy. Kliknij prawym przyciskiem myszy wewnątrz kontrolki StonglyTypedIndex() i wybierz polecenie Dodaj widok. Tym razem wybierz klasę Model bloga i wybierz pozycję Lista jako szablon szkieletu.
W nowym szablonie widoku uzyskujemy obsługę funkcji IntelliSense.
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla