2013-06-07 6 views
6

मैं एमवीसी 4 और रेजर का उपयोग कर रहा हूं और मॉडल प्रकार को एक दृश्य के भीतर से निर्धारित करना चाहता हूं। यह आसान होना चाहिए लेकिन मैं वाक्यविन्यास को सही करने में काफी सक्षम नहीं हूं।एमवीसी व्यू में मॉडल प्रकार प्राप्त करें

मैं तो मैं वर्तमान दृश्य और मॉडल है कि यह प्रयोग किया जा रहा है पर निर्भर करता है _Layout.cshtml पेज में अलग मार्कअप सशर्त प्रदर्शित कर सकते हैं ऐसा करना चाहते हैं

यह होना चाहिए (मुझे लगता है कि) की तर्ज पर कुछ।:

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

कोई भी सुझाव बहुत सराहना की!

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

या भी (भद्दा है):

उत्तर

12

आप is कीवर्ड इस्तेमाल कर सकते हैं

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

धन्यवाद दोस्तों, और सिर्फ चेहरे को बचाने के लिए, मैं निश्चित हूं * मैंने ऊपर दी गई दूसरी विधि की कोशिश की और यह काम नहीं किया। मैंने अब कोशिश की है और यह काम करता है! एक टाइपो या कुछ होना चाहिए। वैसे भी धन्यवाद वी। – WheretheresaWill

4

हालांकि आप पहले से ही एक जवाब मैं पूरी अवधारणा पर पुनर्विचार करने के लिए आप सुझाव है कि मिल गया है।

आप यहां क्या कर रहे हैं कुछ विशेष विचारों के साथ सामान्य लेआउट को जोड़ना है। वे विचार भविष्य में बदल सकते हैं जो आपको लेआउट बदलने की आवश्यकता है, उनमें से अधिक से अधिक हो सकते हैं या कुछ हटा दिए जाएंगे। तो आपका दृष्टिकोण एकल उत्तरदायित्व सिद्धांत को तोड़ता है: _layout.cshtml को बदलने के लिए स्पष्ट रूप से एक से अधिक कारण हैं।

@section SomeSection { <h1>markup</h1> } को ऐसे अतिरिक्त कोड की आवश्यकता वाले विचारों में का उपयोग करके लेआउट में प्रतिपादन करने के बारे में क्या है, शायद आप जिस स्थान पर चाहते हैं @if(IsSectionDefined("SomeSection")) की जांच के साथ?

+0

हां उचित बिंदु। मैं इस विधि का उपयोग करने पर भी एक नज़र डालेगा। '_Layout' में आयोजित एक मोडल की सामग्री के लिए त्वरित समाधान के लिए यह और अधिक था, लेकिन फिर भी एक अच्छा बिंदु - धन्यवाद। – WheretheresaWill

संबंधित मुद्दे