asp.net mvc - Emit DataAnnotations [DisplayName] in MVC PropertyValueRequired format string? -


वांछित व्यवहार

एक मॉडल में बिना एक undecorated non-nullable मूल्य-प्रकार संपत्ति स्वतः एक मान्य संदेश प्राप्त करता है DefaultModelBinder द्वारा जोड़ा गया "एक मान आवश्यक है" मैं इसे बजाय "संपत्ति खोज नाम के लिए एक मान की आवश्यकता" प्रदर्शित करना चाहूंगा।

मुझे इसे ठीक तरह से काम करने के लिए मिल सकता है, डेटाएनेटेटेड गुणों के लिए, string.format टेम्पलेट। मैं इस परिस्थिति में डिफ़ॉल्ट मॉडेबल बिल्डर से प्रदर्शित करने के लिए डिफ़ॉल्ट शाब्दिक स्ट्रिंग भी बदल सकता हूं। मैंने एक संसाधन के रूप में एक templated स्ट्रिंग जोड़ दी है: PropertyValueRequired - & gt; "जानकारी {0}" के लिए आवश्यक है , के अनुसार:

यहां स्टैक ओवरफ्लो पर उदाहरणों से संकेत मिलता है कि यह संभव है, दोनों एमवीसी के लिए डिफ़ॉल्ट मॉडेलबिन्डर और डेटाअनोटेशन वैल्यूएटर के लिए। ऊपर दिए गए दोनों लिंक्स में, पूछने वाला यह इंगित करता है कि वह इसे डिफ़ॉल्ट मॉोडेलबैंकर के लिए कर रहा है (लेकिन अन्य पहलुओं को काम नहीं कर सकता)।


अवलोकन व्यवहार

दुर्भाग्य से, यह {0} शब्दकोष से एमवीसी डिफ़ाल्टमॉडेलबैण्डर (जहां मैं बजाय डिस्प्लेएनएनएम डाला चाहता हूं)।

क्या भ्रामक पदों के ऊपर स्थित हैं? क्या MVC3 PropertyValueInvalid के लिए एक प्रारूप स्ट्रिंग का समर्थन करता है, लेकिन PropertyValueRequired नहीं है? कन्वेंशन से, क्या मैं केवल डेटाएनेटेशन का उपयोग करना चाहिए, और अगर मुझे डिफाल्टमोडेलबंदर संदेश दिखाई देता है तो क्या इसका मतलब है कि मैंने पर्याप्त रूप से काम नहीं किया है / सजाया है?

मुझे लगता है, निम्नलिखित पोस्ट में, डरिन डिमिट्रोव कह सकते हैं कि यह एक टेम्पलेट का उपयोग करना संभव नहीं है उद्धरण: "डिफ़ॉल्ट आवश्यक त्रुटि संदेश को ओवरराइड करें ... विश्व स्तर पर, जो बेकार होगा।"


मैं ऐसा क्यों करना चाहता हूं
  • जब मैं एक अंतर्निहित जटिल प्रकार से बाइंड करता हूँ, जैसे एक शब्दकोष; स्ट्रिंग, इंटैब, , वहाँ (एट) सजाने का कोई तरीका नहीं है सत्यापन संदेश, इसलिए मुझे डिक्शनरी के प्रत्येक सदस्य के लिए एक जेनेरिक सत्यापन संदेश (डिफॉल्ट मॉोडेलबैंकर्स, डेटा एन्नेटेशन नहीं) मिलता है।
  • मुझे उम्मीद है (स्वाभाविक रूप से, मुझे लगता है) स्थानीय मूल्य-आवश्यक संसाधन संदेश पार्सिंग इसी तरह से काम करने के लिए समान रूप से
  • मैं AddImplicitRequiredAttributeForValueTypes को चेकबॉक्स और तिथि / समय बाध्यकारी मुद्दों को संबोधित करने के लिए एक लोकप्रिय विधि के रूप में अक्षम कर रहा था, जो इस कार्यात्मक असमानता को बढ़ाती दिखाई देता है।
  • अज्ञात क्षेत्रों के एक खंड सत्यापन संदेश में नामों को देखने से डीबग समय कम हो जाता है।

    मेरे लिये कार्य करता है। चरण:

    1. में App_GlobalResources / Messages.resx जोड़ें आवश्यक = & gt; {0}
    2. अपने मॉडल को सजाने के लिए जानकारी आवश्यक है:

        सार्वजनिक वर्ग 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; }    
    3. यदि आप रिक्त छोड़ने के फॉर्म को निम्न संदेश प्रदर्शित करते हैं तो सबमिट करें: जानकारी बार के लिए आवश्यक है

Comments