एंटिटी फ्रेमवर्क और एएसपी.नेट एमवीसी 3 का उपयोग करके मेरे मॉडल को सत्यापित करते समय मुझे स्ट्रिंग लम्बाई एट्रिब्यूट का उपयोग करने में परेशानी हो रही है।StringLengthAttribute कैसे काम करता है?
मेरा मॉडल एक इकाई फ्रेमवर्क इकाई पर आधारित है जिसमें एक आंशिक वर्ग है जो मेटाडेटा टाइप करने के लिए उपयोग करने के लिए मेटाडेटा टाइप विशेषता का उपयोग करता है जो मेटाडेटा की खोज करते समय उपयोग करने के लिए टाइप करता है। यह नीचे दिए गए कोड में दिखाया गया है:
[MetadataType(typeof(PartMetadata))]
public partial class Part { }
class PartMetadata
{
[DisplayName("Part number")]
[Required(ErrorMessage="* Required")]
[StringLength(50, MinimumLength = 3, ErrorMessage = "* Part numbers must be between 3 and 50 character in length.")]
public string Number { get; set; }
[StringLength(255, MinimumLength=3,
ErrorMessage="* Part descriptions must be between 3 and 255 characters in length.")]
public string Description { get; set; }
[DisplayName("Drawing required?")]
public bool DrawingRequired { get; set; }
}
समस्या मैं कर रहा हूँ कि वर्णन फ़ील्ड ठीक से मान्य नहीं किया जा रहा है। मेरे मॉडल के नीचे दिए गए कोड का उपयोग ठीक के रूप में मान्य है और मुझे विवरण नियंत्रक के खाली होने पर भी मेरे नियंत्रक के इंडेक्स पेज पर रीडायरेक्ट किया गया है।
if (ModelState.IsValid)
{
return RedirectToAction("Index");
}
else
{
return View();
}
मैं तो वर्णन क्षेत्र के लिए एक RequiredAttribute जोड़ देते हैं तो अपने मॉडल एक अमान्य स्थिति में होने के रूप में वर्गीकृत किया जाता है और मेरे रूप में आवश्यक विशेषता के डिफ़ॉल्ट त्रुटि संदेश दिखा पुनः लोड है। यदि मैं बाद में वर्णन फ़ील्ड को संपादित करता हूं तो यह स्ट्रिंग लम्बाई विशेषता में सेट प्रमाणीकरण त्रुटि संदेश दिखाता है।
क्या यह विशेषता व्यवहार करना चाहिए? यह आवश्यक विशेषता वाले गुणों को सजाने में कोई समस्या नहीं है, लेकिन क्षेत्र की आवश्यकता नहीं है क्योंकि counterinuitive लगता है, मैं बस यह सुनिश्चित करना चाहता हूं कि यदि उपयोगकर्ता कुछ टाइप करता है तो यह स्ट्रिंग लंबाई विशेषता की सीमा के भीतर आता है।
मैं समझता हूँ, यह वास्तव में काम कर रहा है के रूप में आप यह उम्मीद करते हैं। यह सिर्फ स्ट्रिंग लम्बाई को मान्य कर रहा है *** यदि ** उपयोगकर्ता कुछ टाइप करता है *। यदि आप * वास्तव में * उसे कुछ टाइप करना चाहते हैं, तो [आवश्यक] की आवश्यकता है, जैसा आपने कहा था। आप किस व्यवहार के लिए खोज रहे हैं? – Joao
फ़ील्ड को रिक्त स्थानांतरित करना ** शून्य ** माना जाता है और वह तब होता है जब [आवश्यक] विशेषता ट्रिगर्स होती है। – Joao