व्यवहार [MaxLength]
और [StringLength]
विशेषताओं में क्या अंतर है ?
जहां तक मैं बता सकता हूं (अपवाद के साथ जो [MaxLength]
किसी सरणी की अधिकतम लंबाई को मान्य कर सकता है) ये समान और कुछ हद तक बेमानी हैं?
व्यवहार [MaxLength]
और [StringLength]
विशेषताओं में क्या अंतर है ?
जहां तक मैं बता सकता हूं (अपवाद के साथ जो [MaxLength]
किसी सरणी की अधिकतम लंबाई को मान्य कर सकता है) ये समान और कुछ हद तक बेमानी हैं?
जवाबों:
MaxLength का उपयोग एंटिटी फ्रेमवर्क के लिए किया जाता है ताकि यह तय किया जा सके कि डेटाबेस बनाते समय स्ट्रिंग वैल्यू फ़ील्ड को कितना बड़ा बनाया जाए।
MSDN से:
किसी प्रॉपर्टी में अनुमत सरणी या स्ट्रिंग डेटा की अधिकतम लंबाई निर्दिष्ट करता है।
StringLength एक डेटा एनोटेशन है जिसका उपयोग उपयोगकर्ता इनपुट के सत्यापन के लिए किया जाएगा।
MSDN से:
न्यूनतम और अधिकतम लंबाई निर्दिष्ट करता है जो किसी डेटा फ़ील्ड में अनुमत हैं।
MaxLengthAttribute
, जबकि एफई पहचान करता हैStringLengthAttribute
[MaxLength]
फिर एक ErrorMessage क्यों है ?
कुछ त्वरित लेकिन अत्यंत उपयोगी अतिरिक्त जानकारी जो मैंने अभी किसी अन्य पोस्ट से सीखी है, लेकिन इसके लिए प्रलेखन ढूंढना प्रतीत नहीं हो सकता है (यदि कोई व्यक्ति MSDN पर इसके लिए लिंक साझा कर सकता है जो आश्चर्यजनक होगा):
इन विशेषताओं से जुड़े सत्यापन संदेश वास्तव में विशेषताओं से जुड़े प्लेसहोल्डर्स को बदल देंगे। उदाहरण के लिए:
[MaxLength(100, "{0} can have a max of {1} characters")]
public string Address { get; set; }
चरित्र सीमा से अधिक होने पर निम्नलिखित का उत्पादन करेगा: "पता में अधिकतम 100 वर्ण हो सकते हैं"
जिन प्लेसहोल्डर्स से मैं वाकिफ हूं:
शुरुआत में इसे इंगित करने के लिए ब्लौडराक का बहुत धन्यवाद ।
निम्नलिखित परिणाम हैं जब हम दोनों का उपयोग करते हैं [MaxLength]
और [StringLength]
विशेषताओं, में EF code first
। यदि दोनों का उपयोग किया जाता है, [MaxLength]
तो रेस जीतता है। studentname
नीचे कक्षा में कॉलम में परीक्षा परिणाम देखें
public class Student
{
public Student () {}
[Key]
[Column(Order=1)]
public int StudentKey { get; set; }
//[MaxLength(50),StringLength(60)] //studentname column will be nvarchar(50)
//[StringLength(60)] //studentname column will be nvarchar(60)
[MaxLength(50)] //studentname column will be nvarchar(50)
public string StudentName { get; set; }
[Timestamp]
public byte[] RowVersion { get; set; }
}
सभी अच्छे उत्तर ... मान्यता के दृष्टिकोण से, मैंने यह भी देखा कि MaxLength सर्वर साइड पर ही मान्य हो जाती है, जबकि StringLength क्लाइंट साइड पर भी मान्य हो जाती है।
MaxLengthAttribute अधिकतम का मतलब है। सरणी या स्ट्रिंग डेटा की लंबाई की अनुमति है
StringLengthAttribute का अर्थ न्यूनतम है। और अधिकतम। डेटा फ़ील्ड में अनुमत वर्णों की लंबाई
Http://joeylicc.wordpress.com/2013/06/20/asp-net-mvc-model-validation-using-data-annotations/ पर जाएँ
नोट करने के लिए एक और बिंदु अधिकतम गति में है आप केवल अधिकतम आवश्यक सीमा प्रदान कर सकते हैं एक न्यूनतम आवश्यक सीमा नहीं। जबकि StringLength में आप दोनों प्रदान कर सकते हैं ।
मैंने अपने संदर्भ में नीचे पंक्ति जोड़कर इसे हल किया है:
modelBuilder.Entity<YourObject>().Property(e => e.YourColumn).HasMaxLength(4000);
किसी तरह, [MaxLength]
मेरे लिए काम नहीं किया।
वेबपृष्ठ पर किसी प्रपत्र से पाठ के लिए अधिकतम इनपुट लंबाई को प्रतिबंधित करने के लिए विशेषता का उपयोग करते समय, StringLength Maxlength html विशेषता उत्पन्न करने के लिए लगता है (कम से कम MVC 5 के साथ मेरे परीक्षण में)। इसके बाद चुनने वाला इस बात पर निर्भर करता है कि आप उपयोगकर्ता को कैसे सचेत करना चाहते हैं कि यह अधिकतम पाठ लंबाई है। स्ट्रेंगलिंग विशेषता के साथ, उपयोगकर्ता अनुमत लंबाई से परे टाइप करने में सक्षम नहीं होगा। अधिकतम गति विशेषता इस html विशेषता को नहीं जोड़ती है, इसके बजाय यह डेटा सत्यापन विशेषताएँ उत्पन्न करती है, जिसका अर्थ है कि उपयोगकर्ता संकेतित लंबाई से परे टाइप कर सकता है और लंबे इनपुट को रोकना जावास्क्रिप्ट में सत्यापन पर निर्भर करता है जब वह अगले फ़ील्ड पर जाता है या क्लिक सबमिट (या करता है) यदि जावास्क्रिप्ट अक्षम है, सर्वर साइड सत्यापन)। इस मामले में उपयोगकर्ता को एक त्रुटि संदेश द्वारा प्रतिबंध के बारे में सूचित किया जा सकता है।