Dinamik ve Kesin Türü Belirtilmiş Görünümler
tarafından Rick Anderson
ASP.NET MVC 3'te bir denetleyiciden görünüme bilgi geçirmenin üç yolu vardır:
- Kesin olarak yazılan bir model nesnesi olarak.
- Dinamik tür olarak (dinamik kullanarak @model )
- ViewBag'i kullanma
Dinamik ve kesin yazılmış görünümleri karşılaştırmak ve karşılaştırmak için basit bir MVC 3 Top Blog uygulaması yazdım. Denetleyici, basit bir blog listesiyle başlar:
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();
}
}
}
IndexNotStonglyTyped() yöntemine sağ tıklayın ve Razor görünümü ekleyin.
Kesin olarak belirlenmiş görünüm oluştur kutusunun işaretli olmadığından emin olun. Sonuçta elde edilen görünüm çok fazla şey içermez:
@{
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
Kesin olarak belirlenmiş bir görünüm değil dinamik bir görünüm kullandığımız için IntelliSense bize yardımcı olmaz. Tamamlanan kod aşağıda gösterilmiştir:
@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>
Şimdi kesin olarak yazılan bir görünüm ekleyeceğiz. Denetleyiciye aşağıdaki kodu ekleyin:
public ActionResult StonglyTypedIndex() {
return View(topBlogs);
}
Tam olarak aynı dönüş Görünümü (topBlogs) olduğunu fark edin; , kesin olarak yazılmayan görünüm olarak çağırın. StonglyTypedIndex() içine sağ tıklayın ve Görünüm Ekle'yi seçin. Bu kez Blog Modeli sınıfını seçin ve yapı iskelesi şablonu olarak Liste'yi seçin.
Yeni görünüm şablonunun içinde IntelliSense desteği elde ediyoruz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin