2012-06-15 18 views
27

मॉडल के लिए बाध्यकारी नहीं है मैं एमवीसी 4 रेजर के साथ मुझे पैरों को खोजने की कोशिश कर रहा हूं और मैं इस साधारण समस्या से फंस गया हूं।एमवीसी 4 रेजर - @ एचटीएमएल। डिस्प्ले मॉडल

जब मैं @ एचटीएमएल का उपयोग करता हूं। डिस्प्ले के लिए मॉडल हमेशा न्यूल के रूप में वापस भेजा जाता है, लेकिन जब मैं @ एचटीएमएल का उपयोग करता हूं। टेक्स्टबॉक्स यह मॉडल पूरी तरह से आबादी वाला है, मुझे क्या याद आ रही है?

अग्रिम

+0

मुझे फ़ील्ड को "लेबल" के रूप में प्रदर्शित करने की आवश्यकता है। इसलिए; इस दृश्य का उद्देश्य उपयोगकर्ता को डेटाबेस में सबमिट करने से पहले डेटा देखने में सक्षम बनाना है। कोई विचार है कि मैं इसे कैसे प्राप्त कर सकता हूं? – Jacques

उत्तर

51

यह एक आम मुद्दा यह है कि कई लोगों को asp.net MVC के ढांचे में याद आती है है में। HiddenFor, DisplayFor, TextBoxFor जैसे मददगारों में केवल अंतर नहीं - लेकिन फ्रेमवर्क स्वचालित रूप से इन इनपुट को एकत्रित और मान्य करने के तरीके को कैसे सेट करता है। जादू सभी एचटीएमएल 5 के डेटा- * विशेषताओं के साथ किया जाता है। आपको नोट किया जाएगा कि इनपुट टैग को देखते हुए data-val, data-val-required, और शायद प्रकार के लिए कुछ अतिरिक्त डेटा गुणों के रूप में कुछ अतिरिक्त गुण होने जा रहे हैं, उदाहरण के लिए संख्यात्मक data-val-number होगा।

ये डेटा विशेषताएँ DOM को पार्स करने के लिए jQuery एक्सटेंशन jquery.validate.unobtrusive.js को अनुमति देती हैं और फिर तय करती हैं कि कौन से फ़ील्ड त्रुटियों को सत्यापित या उत्पन्न करते हैं।

पोस्ट किए गए डेटा का वास्तविक संग्रह name संपत्ति से दर्शाया गया है। इस मॉडल को मैप करना चाहिए जो सी # या वीबी [HttpPost] विधि में है।

HiddenFor का उपयोग करें जब आप पोस्ट डेटा प्रदान करना चाहते हैं जिसे उपयोगकर्ता को अवगत होने की आवश्यकता नहीं है।

जब आप रिकॉर्ड दिखाना चाहते हैं तो DisplayFor का उपयोग करें, लेकिन उन्हें संपादित करने की अनुमति न दें।

TextBoxFor का उपयोग करें जब आप उपयोगकर्ता इनपुट को अनुमति देना चाहते हैं या उपयोगकर्ता को फ़ील्ड संपादित करने की अनुमति देना चाहते हैं।

संपादित

"the purpose of this view is to enable the user to view the data before submitting it to the database. Any ideas how I can achieve this?"

आप HiddenFor और DisplayFor की एक जोड़ी के साथ यह पूरा कर सकता है। मूल्यों को दिखाने के लिए HiddenFor का उपयोग करने के लिए तैयार करें, और DisplayFor का उपयोग करें।

+0

आप में बहुत अच्छा है.धन्यवाद। – mostafakvd

15

DisplayFor धन्यवाद मॉडल बंधन नहीं करेंगे। TextBoxFor ऐसा करेगा क्योंकि यह फ़ॉर्म में input तत्व बनाता है और फ़ॉर्म पोस्ट होने पर इसे संभाल सकता है। यदि आप एचटीपीपोस्ट एक्शन में कुछ डेटा प्राप्त करना चाहते हैं और आप टेक्स्टबॉक्स फोर का उपयोग नहीं करना चाहते हैं, तो आप HiddenFor एचटीएमएल हेल्पर विधि का उपयोग कर फॉर्म के अंदर एक छिपे हुए चर में उस पर्टिकुलर मॉडल प्रोपर्टी को रख सकते हैं।

@using(Html.BeginForm()) 
{ 
    <p>The Type Name is</p> @Html.DisplayFor(x=>x.TypeName) 
    @Html.HiddenFor(x=>x.TypeName) 
    <input type="submit" value="Save" /> 
} 
+0

हाय श्याजू, मुझे फ़ील्ड को "लेबल" के रूप में प्रदर्शित करने की आवश्यकता है। यही कारण है कि; इस दृश्य का उद्देश्य उपयोगकर्ता को डेटाबेस में सबमिट करने से पहले डेटा देखने में सक्षम बनाना है। कोई विचार मैं इसे कैसे प्राप्त कर सकता हूं? – Jacques

+0

! @jacques: तो उपयोगकर्ता को डेटा दिखाने के लिए Displayfor का उपयोग करें और छिपे हुए चरों में रखने के लिए HiddenFor का उपयोग करें और फिर आप एक फॉर्म पोस्ट करने के लिए अच्छे हैं। – Shyju

1

DisplayFor एक HTML लेबल बनाता है, इनपुट नहीं। लेबल सर्वर पर पोस्ट नहीं किए जाते हैं, लेकिन इनपुट हैं।

0

क्या आपका मतलब एक फॉर्म पोस्ट के दौरान है? यदि आप DisplayFor का उपयोग करते हैं, तो यह एक तत्व बनाता है जिसमें कोई भी फॉर्म मान नहीं है। आम तौर पर आप इन्हें अपने टेक्स्टबॉक्स के लिए लेबल बनाने के लिए एक दूसरे के साथ संयोजन में उपयोग करते हैं, फिर उपयोगकर्ताओं को डेटा तत्व को संशोधित करने के लिए Html.TextBoxFor का उपयोग करते हैं।

उदाहरण:

@Html.DisplayFor(x=>x.Item) 
@Html.TextBoxFor(x=>x.Item) 

प्रदान करेगा

Item <a text input field following> 

या HTML

<label for="Item">Item</label><input type="Text" id="Item" name="Item"/> 
5

DisplayFor और HiddenFor दोनों का उपयोग करें। DisplayFor बस टेक्स्ट प्रदर्शित करता है और इनपुट फ़ील्ड नहीं है, इस प्रकार, इसे वापस पोस्ट नहीं किया जाता है। HiddenFor वास्तव में <input type="hidden" value="xxxx"/>

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