2012-08-06 26 views
6

मैं एक एमवीसी 3 अनुप्रयोग पर काम कर रहा हूं। मॉडल में क्षेत्रों में से एक प्रकार पर दो की इस प्रकार है और परिभाषित:डिफ़ॉल्ट कैसे बदलें "फ़ील्ड एक संख्या होना चाहिए"

[Required(ErrorMessageResourceName = "ListingItemPriceRequired", ErrorMessageResourceType = typeof(ErrorMessages))] 
    [Display(Name = "DisplayListingItemPrice", ResourceType = typeof(Display))] 
    [Range(1, 500000000, ErrorMessageResourceName = "ListingItemPriceNotWithinRange", ErrorMessageResourceType = typeof(ErrorMessages))] 
    public double Price { get; set; } 

फिर भी, जब मैं "342" की तरह कुछ अवांछित स्पेस के साथ एक नंबर के कोई मान दर्ज, मैं डिफ़ॉल्ट संदेश "मिल क्षेत्र कीमत एक संख्या होना चाहिए "।

यहां तक ​​कि मूल्य इनपुट फ़ील्ड पर सत्यापन विशेषता में कुछ "डेटा-वैल-नंबर" है।

धन्यवाद

उत्तर

4

डिफ़ॉल्ट संदेश ढांचे में गहराई से बेक किया जाता है, एक स्ट्रिंग संसाधन के रूप में। स्ट्रिंग मान को डबल प्रकार में बांधने का प्रयास करते समय इसे डिफ़ॉल्ट मॉडल बाइंडर द्वारा जोड़ा जाता है। इसलिए यदि आप इस डिफ़ॉल्ट संदेश को बदलना चाहते हैं तो आप कस्टम मॉडल बाइंडर लिख सकते हैं। https://stackoverflow.com/a/7836093/29407

+0

धन्यवाद डारिन। प्रत्येक डेटा प्रकार के लिए एक मॉडल बांधने की मशीन है? बीटीडब्ल्यू, क्या आपके पास ब्लॉग है? – Bill

+3

मैंने एक कस्टम मॉडल बाइंडर लागू किया, लेकिन अभी भी ग्राहक पक्ष पर, वही वाक्य प्रदर्शित होता है, डिफ़ॉल्ट एक। क्लाइंट साइड पर भी एक और संदेश इंजेक्ट कैसे करें? धन्यवाद – Bill

3

मैंने पाया यह आसान सिर्फ इतना कहना है: यहाँ एक उदाहरण मैं दिनांक समय प्रकार है जो एक ही मुद्दा है के लिए लिखा था है

[RegularExpression("([0-9]+)", ErrorMessageResourceType = typeof(ErrorMessage), ErrorMessageResourceName = "NumberInvalid")] 
+0

यह करने का यह एक आसान तरीका है। – Sprintstar

14

आप चीजों का सिर्फ विनीत सत्यापन पक्ष में बदलाव के साथ ठीक कर रहे हैं, आप हमेशा अपनी खुद की jQuery सत्यापन विशेषताओं आपूर्ति कर सकते हैं:

@Html.TextBoxFor(model => model.Price, new Dictionary<string, object>() { { "data-val-number", "Price must be a valid number." } }) 

या, निम्नलिखित सरल MVC की जगह के रूप में किया जाता है विशेषता नाम में डैश के साथ होने वाले अंडरस्कोर:

@Html.TextBoxFor(model => model.Price, new { data_val_number = "Price must be a valid number." }) 
+0

विस्मयकारी समाधान @ स्कोट, सचमुच मुझे पूरे इंटरनेट की खोज की गई लेकिन मुझे कोई राहत समाधान नहीं मिला। यह बहुत अच्छा काम करता है। धन्यवाद...!!!!! –

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