2012-07-14 23 views
7

Model oluşturan ve modeli parametre olarak geçiren bir görünümü çağıran bir denetleyicim var. Görünümde Model türünü belirten bir Yönelme yönergesi vardır. Aynı Görünümü yeniden kullanmak, ancak denetleyiciden farklı bir model geçirmek istiyorum. Görünümdeki (yönerge) Model yönergesini dinamik olarak (veya koşullu olarak) değiştirmek mümkün mü? Benim denetleyicisi eylem Örneğinod direct direct direct direct direct direct direct direct direct ra ra ra ra ra ra ra ra ra ra ra ra ra

:

var contactsModel = db.GetContacts(); 
var companiesModel = db.GetCompanies(); 
return (someCondition)? View(contactsModel):View(companiesModel); 

O zaman nasıl bir Görünüm yönergesinde @model tanımlayabilirsiniz hem modellerini karşılamak için? Aynı görünümün bilgiyi iletilen modelin türüne göre oluşturmasını istiyorum.

Teşekkür ederiz.


GÜNCELLEME:

Teşekkürler ama sadece farklı modelleri ile bir ortak Görünüm kullanmak gerekir.

Mümkün, işte bu nasıl yapılabilir. Bir Görünümde

ben define: Model sınıfta
@model IEnumerable<MvcApplication1.Models.IBaseInterface> 

Ben tanımlayın:

public interface IBaseInterface { } 

public class Contact: IBaseInterface {} 

public class Company: IBaseInterface {} 

Sonra bir görünümünde kullanıyorum:

@if (Model is List<Contact>) { 
    @foreach (var item in (List<Contact>)Model) 
     { // Here item has type Contact } 
} 

@if (Model is List<Company>) { 
    @foreach (var item in (List<Company>)Model) 
     { // Here item has type Company } 
} 

Çalışmaları mükemmel :)

cevap

4

Görünümde dinamik olarak (veya koşullu olarak) Model yönergesini değiştirmek mümkün mü? a view model per view:

return (someCondition) 
    ? View("Contacts", contactsModel) 
    : View("Companies", companiesModel);\ 

ASP.NET MVC temel bir kural şudur:

sayılı

bunu yapabileceğinden farklı görünümleri gerektiği anlamına gelir farklı modeller geçmek gerekirse

.

0

Kolay ve hoş bir çözüm, görünüm modelini kullanmak ve görünümü bu modele bağlamak ve denetleyici eylemlerinden modelleri modele dönüştürebilir ve görüntüye geçirebilirsiniz.

Eğer dinamizmin bir hayranıysanız ve iki modelin özellikleri aynıysa diğer seçeneği dynamic modeline bağlayabilirsiniz.

İlgili konular