2010-03-13 10 views
7

में मान्य संदेश बदलें मेरे ऑब्जेक्ट में डेटा प्रकार int के साथ फ़ील्ड है। जब मैं इस टेक्स्टबॉक्स पत्र में एचटीएमएल फॉर्म डालता हूं तो सत्यापनकर्ता संख्या नहीं कहता- फ़ील्ड एक संख्या होनी चाहिए। मैं कैसे इसडेटा एनोटेशन

[Required(ErrorMessage = "Введите название")] 
    [DisplayName("Название")] 
    public int age { get; set; } 
+0

इस सवाल को कम करने का कोई कारण क्यों है? एक प्रश्न को कम करने पर कृपया एक टिप्पणी छोड़ दें। आईएमएचओ यह एक अच्छा सवाल है। –

+0

हर कोई रूसी समझ में नहीं आता है। विशेषता पाठ अंग्रेजी में होना चाहिए। –

उत्तर

4

की तरह इस संदेश को बदल सकते हैं मैं एक स्वच्छ तरह से डाटा एनोटेशन का उपयोग कर इस लक्ष्य को हासिल करने के लिए नहीं मिला है। एक तरीका कस्टम मॉडल बाइंडर लिखना होगा, लेकिन ऐसा लगता है कि इस तरह के एक साधारण कार्य के लिए बहुत सारे काम हैं।

इसे प्राप्त करने का एक और तरीका यह है कि App_GlobalResources फ़ोल्डर को अपने एएसपी.NET एप्लिकेशन में जोड़ना है। Messages.resx नामक एक संसाधन फ़ाइल जोड़ें जिसमें PropertyValueRequired स्ट्रिंग संसाधन शामिल है।

PropertyValueRequired = "Some custom error message" 

अपने Application_Start रजिस्टर संसाधन वर्ग कुंजी में:

protected void Application_Start() 
{ 
    RegisterRoutes(RouteTable.Routes); 
    DefaultModelBinder.ResourceClassKey = "Messages"; 
} 

ध्यान दें कि ASP.NET MVC 2 PropertyValueInvalid बजाय PropertyValueRequired संसाधन कुंजी का उपयोग करता।

सत्यापन तर्क करने के लिए डेटा एनोटेशन का उपयोग कर आईएमओ सीमित है (शायद .NET 4 में यह बदलेगा)। यदि आप सत्यापन तर्क पर पूर्ण नियंत्रण रखना चाहते हैं तो मैं आपको Fluent Validation या xVal जैसे सत्यापन लायब्रेरी का उपयोग करने की सलाह दूंगा।

+0

मुझे बिल्कुल वही समस्या है। मैं डेटा एनोटेशन से फ्लुएंट वैलिडेशन में भी स्थानांतरित हो गया। मुझे धाराप्रवाह प्रमाणीकरण वास्तव में उपयोगी लगता है, और अनुकूलित करने में आसान है। –

+0

किसी भी कारण से आप Fluentvalidation की अनुशंसा करते हैं? क्या यह एंटरप्राइज़ लाइब्रेरी सत्यापन आवेदन ब्लॉक से बेहतर है? बीटीडब्ल्यू, एक्सवेल वर्तमान में बहिष्कृत है। –

+0

मैं एफवी की सिफारिश करता हूं क्योंकि यह हल्का वजन है, जटिल सत्यापन नियमों को एक सुरुचिपूर्ण तरीके से व्यक्त करने की अनुमति देता है, यह आसानी से उन सत्यापन नियमों का परीक्षण करने के लिए एक एपीआई प्रदान करता है और एएसपी.नेट एमवीसी के साथ एक बड़ा एकीकरण है। –

2

मैं एक ही समस्या में भाग गया और एक नियमित एक्सप्लोरेशन निर्दिष्ट करके इसके आसपास काम किया जो केवल सकारात्मक प्राकृतिक संख्याओं को अनुमति देता है।

[Required(ErrorMessage = "Введите название")] 
[DisplayName("Название")] 
[RegularExpression(@"^[0-9]+$", ErrorMessage = "Поле возраст не является числом")] 
public int age { get; set; } 

इस समाधान के लिए कोई कमी नहीं है तो सुनिश्चित नहीं है। ऐसा लगता है कि मेरे लिए ठीक काम करता है।

पीएस: यदि आप अग्रणी शून्यों को "^[1-9]+[0-9]*$" का उपयोग करने की अनुमति नहीं देना चाहते हैं।

पूर्वदर्शी में: मुझे यह स्वीकार करना होगा कि यह एक पूर्णांक में नियमित अभिव्यक्ति जोड़ने के लिए थोड़ा अजीब है।

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

  • कोई संबंधित समस्या नहीं^_^