2011-12-30 15 views
8

मैं इस मॉडल है , और संपादन योग्य नहीं है। मुझे यह कैसे करना चाहिए? यदि मैं इस वर्ग के लिए एक और "दृश्य-केवल" मॉडल बनाता हूं, तो मैं "मुद्रा" संपत्ति को छोड़ दूंगा और इसे प्रदर्शित नहीं कर पाऊंगा।MVC कुछ क्षेत्रों के लिए 3 संपादित दृश्य केवल

@using (Html.BeginForm()) { 
@Html.ValidationSummary(true) 
<fieldset> 
    <legend>ExchangeRate</legend> 

    @Html.HiddenFor(model => model.ExchangeRateID) 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.Currency) 
    </div> 
    <div class="editor-field"> 
     @Html.DisplayFor(model => model.Currency) 
    </div> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.Rate) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.Rate) 
     @Html.ValidationMessageFor(model => model.Rate) 
    </div> 

    <p> 
     <input type="submit" value="Save" /> 
    </p> 
</fieldset> 

}

बदलने @ Html.EditorFor (मॉडल => model.Currency) @ Html.DisplayFor को (मॉडल => model.Currency) काम नहीं करता क्योंकि मॉडल राज्य अमान्य हो जाता है जब यह नियंत्रक को वापस पोस्ट करें।

उत्तर

10

आप अपने फार्म में

@Html.HiddenFor(model => model.Currency) 

जोड़ सकता है और उसके बाद मुद्रा संपत्ति का केवल पढ़ने के लिए मान प्रदर्शित करने के

@Html.DisplayFor(model=> model.Currency) 

का उपयोग करें। इस तरह जब आप पोस्ट पोस्ट करते हैं तो पोस्ट मॉडल के साथ भेजा जाएगा।

+0

यह ट्विटर बूटस्ट्रैप के साथ संयोजन में भी काम करता है, उदा। निम्नलिखित में उपयोग करके: ' @ Html.DisplayFor (m => m.ProductName)' – Manfred

+1

क्या उपयोगकर्ता फायरबग आदि के माध्यम से पढ़ने-ओल्नी फ़ील्ड संपादित नहीं कर सकता? – Sami

4

आप के लिए देख रहे:

[HiddenInput(DisplayValue=true)] 

तब संपादक, नहीं प्रदर्शन (EditorFor का उपयोग करें) दिखा।

यह केवल पढ़ने के लिए मूल्य प्रदर्शित करता है, लेकिन एक छिपी हुई इनपुट जोड़ता है ताकि पोस्ट किया गया राज्य मान्य हो।

+0

इसे एमवीसी 4 के साथ आजमाया लेकिन मेरे लिए काम नहीं किया और इसके परिणामस्वरूप केवल छुपा हुआ। EditorFor() के साथ कुछ भी प्रदर्शित नहीं होता है। हालांकि, मैंने कुछ अनदेखा किया होगा। मैं @ mreyeros के समाधान के लिए गया जो मेरे लिए काम किया। – Manfred

3

मुद्रा प्रदर्शित करने के लिए, लेकिन यह

@Html.Label("Currency", Model.Currency) 

कोशिश को संपादित नहीं करता है, तो आप भी मुद्रा मूल्य वापस नियंत्रक पर पोस्ट की कोशिश

@Html.HiddenFor(m => m.Currency) 

मुझे आशा है कि इस मदद करता है की जरूरत है।

+0

धन्यवाद, मैंने इस समाधान का उपयोग किया – alpinescrambler

+0

यदि आपको मेरा समाधान पसंद आया, तो कृपया इसके लिए वोट दें :) –

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