वांछित व्यवहार
एक मॉडल में बिना एक undecorated non-nullable मूल्य-प्रकार संपत्ति स्वतः एक मान्य संदेश प्राप्त करता है DefaultModelBinder द्वारा जोड़ा गया "एक मान आवश्यक है" मैं इसे बजाय "संपत्ति खोज नाम के लिए एक मान की आवश्यकता" प्रदर्शित करना चाहूंगा।
मुझे इसे ठीक तरह से काम करने के लिए मिल सकता है, डेटाएनेटेटेड गुणों के लिए, यहां स्टैक ओवरफ्लो पर उदाहरणों से संकेत मिलता है कि यह संभव है, दोनों एमवीसी के लिए डिफ़ॉल्ट मॉडेलबिन्डर और डेटाअनोटेशन वैल्यूएटर के लिए। ऊपर दिए गए दोनों लिंक्स में, पूछने वाला यह इंगित करता है कि वह इसे डिफ़ॉल्ट मॉोडेलबैंकर के लिए कर रहा है (लेकिन अन्य पहलुओं को काम नहीं कर सकता)। दुर्भाग्य से, यह क्या भ्रामक पदों के ऊपर स्थित हैं? क्या MVC3 PropertyValueInvalid के लिए एक प्रारूप स्ट्रिंग का समर्थन करता है, लेकिन PropertyValueRequired नहीं है? कन्वेंशन से, क्या मैं केवल डेटाएनेटेशन का उपयोग करना चाहिए, और अगर मुझे डिफाल्टमोडेलबंदर संदेश दिखाई देता है तो क्या इसका मतलब है कि मैंने पर्याप्त रूप से काम नहीं किया है / सजाया है? मुझे लगता है, निम्नलिखित पोस्ट में, डरिन डिमिट्रोव कह सकते हैं कि यह एक टेम्पलेट का उपयोग करना संभव नहीं है उद्धरण: "डिफ़ॉल्ट आवश्यक त्रुटि संदेश को ओवरराइड करें ... विश्व स्तर पर, जो बेकार होगा।" मेरे लिये कार्य करता है। चरण: अपने मॉडल को सजाने के लिए जानकारी आवश्यक है: यदि आप रिक्त छोड़ने के फॉर्म को निम्न संदेश प्रदर्शित करते हैं तो सबमिट करें: string.format टेम्पलेट। मैं इस परिस्थिति में डिफ़ॉल्ट मॉडेबल बिल्डर से प्रदर्शित करने के लिए डिफ़ॉल्ट शाब्दिक स्ट्रिंग भी बदल सकता हूं। मैंने एक संसाधन के रूप में एक templated स्ट्रिंग जोड़ दी है:
PropertyValueRequired - & gt; "जानकारी {0}" के लिए आवश्यक है , के अनुसार:
अवलोकन व्यवहार
{0} शब्दकोष से एमवीसी डिफ़ाल्टमॉडेलबैण्डर (जहां मैं बजाय डिस्प्लेएनएनएम डाला चाहता हूं)।
मैं ऐसा क्यों करना चाहता हूं
शब्दकोष; स्ट्रिंग, इंटैब, , वहाँ (एट) सजाने का कोई तरीका नहीं है सत्यापन संदेश, इसलिए मुझे डिक्शनरी के प्रत्येक सदस्य के लिए एक जेनेरिक सत्यापन संदेश (डिफॉल्ट मॉोडेलबैंकर्स, डेटा एन्नेटेशन नहीं) मिलता है।
AddImplicitRequiredAttributeForValueTypes को चेकबॉक्स और तिथि / समय बाध्यकारी मुद्दों को संबोधित करने के लिए एक लोकप्रिय विधि के रूप में अक्षम कर रहा था, जो इस कार्यात्मक असमानता को बढ़ाती दिखाई देता है।
App_GlobalResources / Messages.resx जोड़ें
आवश्यक = & gt; {0}
सार्वजनिक वर्ग MyViewModel {[Required (ErrorMessageResourceName = "आवश्यक", ErrorMessageResourceType = प्रकार (संदेश))] [DisplayName ("बार")] सार्वजनिक स्ट्रिंग Foo {get; सेट; दृश्य में इसी क्षेत्र खाली छोड़ दें:
@using (Html.BeginForm ()) {@ Html.LabelFor (x = & gt; x.Foo) @ Html.EditorFor (x = & gt; x.Foo) @ HTML.ValidationMessageFor (x = & gt; x.Foo) & lt; इनपुट प्रकार = "सबमिट करें" मान = "ठीक है "/ & Gt; }
जानकारी बार के लिए आवश्यक है
Comments
Post a Comment