Vizör kullanmak yerine MVC'de bir viewmodel kullanmak istiyorum. Tüm denetleyicilerim arasında paylaşılan bazı genel görüntümodelleri oluşturabilmem için bir yol var mı? Bunun için ne tür bir koda ihtiyacım olurdu? Baz denetleyicide bir şeyler yaratmayı düşünüyordum. Mümkün mü?MVC'de genel bir görünüm modeli nasıl oluşturabilirim?
cevap
Denetleyiciler ve görünümler arasında veri aktarmak için baskın yöntem, görünümünüze aktarmak istediğiniz verileri temsil eden ve bu model değişkenini görüntüleme yöntemine ileten bir sınıf oluşturmaktır.
/Models/Home/IndexViewModel.cs
namespace MyProject.Models.Home
{
public class IndexViewModel
{
public string Message { get; set; }
}
}
Kontrol/HomeController.cs
public class HomeController
{
public ActionResult Index()
{
IndexViewModel model = new IndexViewModel();
model.Message = "Hello World!";
View(model);
}
}
/Views/Home/Index.cshtml (Tıraş MVC3 olarak)
@Model MyProject.Models.Home.IndexViewModel //strongly-typed view
<h1>@model.Message</h1>
Bu basit örneği ele alalım ve özel isteğinize göre geliştirelim. Her görünümün sadece MyClass
modelini kullanmasına izin vermek kolay olurdu. Ancak, bu çok esnek hale gelir, bu yüzden tasarımı esnek tutmak için ne yapardım. Bazı görüntülere (bazıları veya hepsi) geçmek istediğiniz bazı veriler olduğunu varsayacağım. modeller SharedData sınıfını gerektirecek için
/Models/SharedData.cs
namespace MyProject.Models
{
public class SharedData
{
public DateTime Birthday { get; set; }
}
}
bir arayüz oluşturun:
birden çok görünüme iletmek istediğiniz verileri temsil sınıf oluşturun.
/Models/ISharedDataViewModel.cs
namespace MyProject.Models
{
public interface ISharedDataViewModel
{
public SharedData Data { get; set; }
}
}
Güncelleme Ev IndexViewModel arayüzü ve shareddata
/Models/Home/IndexViewModel.cshtml
namespace MyProject.Models.Home
{
public class IndexViewModel: ISharedDataViweModel
{
public string Message { get; set; }
public ShardedData Data { get; set; }
}
}
kullanmak Paylaşılan verinin nasıl görüntüleneceğini bilen Kısmi bir görünüm oluşturun
/Views/Shared/SharedDataView.cs (Ustura MVC3 içinde)
@Model MyProject.Models.ISharedDataViewModel //strongly-typed partial view
@if (model != null && model.Data != null)
{
<h3>@model.Data.Birthday.ToString()</h3>
}
Güncelleme Ana Dizin sayfa kısmi bir görünüm
/Views/Home/Index.cshtml aramaya
@Model MyProject.Models.Home.IndexViewModel //strongly-typed view
<h1>@model.Message</h1>
@Html.Partial("SharedDataView", model)
Şimdi herhangi bir sayfa sayfalar modeli uygular eğer kısmi görünümü için çağırabilir (Ustura MVC3 cinsinden) ISharedDataViewModel
.
- 1. MySQL'de nasıl bir görünüm oluşturabilirim?
- 2. Ubuntu'da nasıl bir genel HTML klasörü oluşturabilirim?
- 3. Asp.Net MVC Razor'da 'genel' kontrol nasıl oluşturabilirim?
- 4. SO gibi genel görüntüler/avatarlar nasıl oluşturabilirim?
- 5. Liste şablonundan (İstemci Nesne Modeli) yeni bir liste nasıl oluşturabilirim?
- 6. Öğeleri yerleştirebileceğim, taşıyabileceğim ve bağlayabileceğim bir şematik görünüm nasıl oluşturabilirim?
- 7. Django Genel Görünüm - Erişim talebi
- 8. Google Container Registry'de (GCR) genel bir resmi nasıl oluşturabilirim?
- 9. Django: Görünümlere genel bir URL yönlendirme nasıl oluşturabilirim?
- 10. ASP.net MVC Görünüm Modeli vs ViewData.Model?
- 11. kesinlikle yazılı .net görünüm Modeli nesne
- 12. Knockout iç içe geçmiş görünüm modeli
- 13. RACCommand'ın Görünüm Modeli Üzerinde Test Etme
- 14. asp.Net MVC görünüm modeli gönderide boş
- 15. Bestpractice - Etki Alanı Modeliyle Karıştırma Görünüm Modeli
- 16. Qt Modeli/Görünüm çerçevesini Grafik Görünümü çerçevesiyle nasıl kullanırım?
- 17. MVVM modelinde model ve görünüm modeli arasında tutarlılığı nasıl koruyabilirim?
- 18. ASP.NET MVC: Json nesnesine Görünüm Modeli dönüştürmek nasıl
- 19. Model-Görünüm Denetleyici modeli iPhone geliştirmeye nasıl uygulanır?
- 20. Nasıl BigQuery Görünümü oluşturabilirim
- 21. Yönlendirmeden Genel Görünüm Ayrıntı GörünümüDuvar görünümü
- 22. Modeli nasıl düzgünce temizlerim?
- 23. raylar + ataç: Genel "Ek" modeli iyi bir fikir midir?
- 24. @csrf_exempt genel görünüm tabanlı sınıfta çalışmaz
- 25. App bir Django modeli nasıl alınır?
- 26. Bir ObjectSet örneğini nasıl oluşturabilirim?
- 27. Rastgele bir yol nasıl oluşturabilirim?
- 28. Bir Görüntüde Katman nasıl oluşturabilirim?
- 29. Yeni bir HttpContext nasıl oluşturabilirim?
- 30. Bir Mailer Observer'ı nasıl oluşturabilirim?
^Çok iyi bir açıklama ve en iyi uygulama. – jhartzell