18

मैंने एक EnumDropDownFor() सहायक लिखा है जिसे मैं EditorFor() के साथ संयोजन में उपयोग करना चाहता हूं। मैंने केवल EditorFor() का उपयोग करना शुरू कर दिया है, इसलिए टेम्पलेट को कैसे चुना जाता है, इस बारे में थोड़ा उलझन में है।एएसपी.नेट एमवीसी: एंटम्स के लिए एक डिफ़ॉल्ट टेम्पलेट के साथ EditorFor() का उपयोग

मेरे Enum.cshtml संपादक टेम्पलेट नीचे है:

<div class="editor-label"> 
    @Html.LabelFor(m => m) 
</div> 
<div class="editor-field">  
    @Html.EnumDropDownListFor(m => m) 
    @Html.ValidationMessageFor(m => m) 
</div> 

स्पष्ट रूप से उपयोग करने के लिए टेम्पलेट परिभाषित करने की कमी है, वहाँ जो जब भी एक Enum एक EditorFor में पारित हो जाता है प्रयोग किया जाता है एक डिफ़ॉल्ट टेम्पलेट के लिए किसी भी तरह से है()?

उत्तर

25

आप ब्रैड विल्सन के ब्लॉग पोस्ट को default templates के बारे में एएसपी.नेट एमवीसी में इस्तेमाल कर सकते हैं। जब आपके पास एनम प्रकार की मॉडल प्रॉपर्टी होती है तो यह स्ट्रिंग टेम्पलेट होता है जिसे प्रस्तुत किया जा रहा है।

~/Views/Shared/EditorTemplates/String.cshtml:

@model object 
@if (Model is Enum) 
{ 
    <div class="editor-label"> 
     @Html.LabelFor(m => m) 
    </div> 
    <div class="editor-field">  
     @Html.EnumDropDownListFor(m => m) 
     @Html.ValidationMessageFor(m => m) 
    </div> 
} 
else 
{ 
    @Html.TextBox(
     "", 
     ViewData.TemplateInfo.FormattedModelValue, 
     new { @class = "text-box single-line" } 
    ) 
} 

और फिर बस अपने ध्यान में रखते हुए:

@Html.EditorFor(x => x.SomeEnumProperty) 
+0

बढ़िया तो तुम इस तरह इस स्ट्रिंग संपादक टेम्पलेट को अनुकूलित सकता है! उस पोस्ट को पढ़ा था लेकिन यह नहीं पता था कि स्ट्रिंग डिफ़ॉल्ट रूप से उपयोग की जाएगी। क्या यह टेम्पलेट उपयोग किया जाता है यदि यह किसी और से मेल नहीं खा सकता है? – ajbeaven

+1

कैंट इसे काम करने के लिए प्राप्त करता है, क्योंकि @if (मॉडल एनम) हमेशा झूठी वापसी करता है क्योंकि मॉडल अल्वियस शून्य है !! .. मुझे क्या याद आ रही है !! ... बहुत बहुत धन्यवाद। – Hossam

+1

'@if (ViewData.ModelMetadata.ModelType.IsEnum) 'उदाहरण की जांच करने के बजाय उपयोग किया जाना चाहिए, ताकि nullabes सही ढंग से उठाए गए हैं। –

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