2013-06-07 7 views
6

yılında Modeli hemen öğren ve Jilet ve istiyoruz. Bu kolay olmalı ama sözdizimini doğru olarak elde edemiyorum.bir görünüm içinden Modeli türünü</strong> belirlemek ben <strong>MVC4 kullanıyorum MVC Görüntüle

Ben bu yüzden daha kullanıldığı geçerli görünüme ve modele bağlı olarak _Layout.cshtml sayfasında farklı işaretlemeyi görüntülemek şartlı olabilir bunu yapmak istiyor

O (Sanırım) olmalıdır çizgisinde bir şey.:

@if (Model.GetType() == Web.Models.AccommodationModel) { // Obviously not correct 
     <h1>Accomodation markup here</h1> 
} 

Herhangi bir öneri çok takdir! Zaten ben tüm konseptinin yeniden düşünmeye sizi öneririm bir cevap var olsa

@if (Model.GetType() == typeof(Web.Models.AccommodationModel)) { 
    <h1>Accomodation markup here</h1> 
} 

cevap

12

Sen is anahtar kelime kullanabilirsiniz.

Burada yaptığınız şey, genel düzenini bazı özel görünümlerle birleştirmektir. Bu görünümler, düzeni değiştirmenizi gerektiren gelecekte değişebilir, daha fazlası olabilir veya bazıları silinebilir. Bu yüzden yaklaşımınız Tek Sorumluluk İlkesini kırar: şüphesiz ki _layout.cshtml değerini değiştirmek için birden fazla neden vardır.

Böyle bir ek kod gerektiren ve @RenderSection("SomeSection") kullanarak mizanpaj içinde görüntüleyebileceğiniz görünümlerde @section SomeSection { <h1>markup</h1> } eklemeye ne dersiniz? @if(IsSectionDefined("SomeSection")) istediğiniz yere mi bakıyorsunuz?

+0

Teşekkürler, ve sadece yüzünü kurtarmak için, ben * emin * Yukarıda önerdiğin ikinci yöntemi denedim ve işe yaramadı. Şimdi tekrar denedim ve işe yarıyor! Bir yazım hatası ya da bir şey olmalı. Neyse, teşekkürler. – WheretheresaWill

4

:

@if (Model is Web.Models.AccommodationModel) { 
    <h1>Accomodation markup here</h1> 
} 

ya da (daha çirkin):

+0

Evet adil nokta. Ben de bu yöntemi kullanarak bir göz atacağım. _Layout'da tutulan bir modalın içeriği için hızlı bir düzeltme daha fazla oldu, ama yine de iyi bir nokta - teşekkürler. – WheretheresaWill

İlgili konular