2009-07-14 11 views
38

मुझे अपने नियंत्रक में सत्यापन कार्य लिखने का आनंद मिलता है जो सत्यापन विफल होने पर ModelState संशोधित करता है। उदाहरण के लिए:मॉडलस्टेट में कुंजी पैरामीटर का बिंदु क्या है। ASP.NET MVC में AddModelError?

private bool ValidateMoney(string raw, string name, decimal min, decimal max) { 
    try { 
     var dec = Convert.ToDecimal(raw); 

     if (dec < min) { 
      throw new ArgumentOutOfRangeException(name + " must be >= " + min); 
     } 
     else if (dec > max) { 
      throw new ArgumentOutOfRangeException(name + " must be <= " + max); 
     } 
    } 
    catch (Exception ex) { 
     ModelState.AddModelError(name, ex.GetUserMessage()); 
    } 
    return ModelState.IsValid; 
} 

लेकिन, मैं कभी पता नहीं क्या ModelState.AddModelError है कि बेवकूफ "कुंजी" तर्क के लिए डाल करने के लिए। (उदाहरण में, मैंने इसे अपने यूआई डिस्प्ले नाम पर सेट किया है।)

एमवीसी डेवलपर्स क्या सोचते थे जब वे इसे जोड़ते थे?

+3

प्रमुख तर्क नामित मॉडल में क्षेत्र के साथ बाँध दिया जाएगा शायद प्रलेखन के रूप में स्पष्ट रूप में यह होना चाहिए नहीं है सब पर बेवकूफ नहीं है,। :) – splattne

उत्तर

52

कुंजी का उपयोग वैलिडेशन मैसेज एचटीएमएल हेल्पर द्वारा प्रदर्शित करने के लिए सटीक त्रुटि संदेश जानने के लिए किया जाता है।

उदाहरण:

<%=Html.TextBox("Name") %> <br /> 
<%=Html.ValidationMessage("Name") %> 

ValidationMessage सहायक संदेश कुंजी "नाम" ModelState शब्दकोश में है कि प्रदर्शित करेगा।

+6

प्रमाणीकरण का प्रयोग सभी प्रकार के अनुप्रयोगों में किया जाता है, न केवल ब्लॉग। –

+2

@ फ्रैंक सम्मानपूर्वक, सुविधा शांत नहीं है? त्रुटि आपके इच्छित फ़ील्ड के बगल में सीधे दिखाई देती है! Google ने मुझे इस प्रश्न पर लाए जाने के बाद ही यह सीखा। – gideon

+4

कुंजी एक खाली स्ट्रिंग हो सकती है, लेकिन शून्य नहीं होनी चाहिए। यदि कुंजी एक खाली स्ट्रिंग है तो इसे HTML.ValidationSummary (false) html सहायक का उपयोग करके देखा जा सकता है –

9

key पैरामीटर का उपयोग फॉर्म फ़ील्ड के साथ सत्यापन त्रुटि को संबद्ध करने के लिए किया जा सकता है।

आप @Html.TextBoxFor का उपयोग किया है किया है (या समान) और एक @Html.ValidationMessageFor, आप (प्रयोग तत्व का निरीक्षण) क्षेत्र सत्यापित किया जा रहा के एचटीएमएल name से कुंजी के मूल्य प्राप्त कर सकते हैं।

तुम सिर्फ एक HTML <input> का उपयोग किया है, तो आप @Html.ValidationMessage("AKeyIMadeUp") का उपयोग कर एक मान्यता प्लेसहोल्डर जोड़ सकते हैं और इस तरह से यह में प्रदर्शित करने के संदेश प्राप्त कर सकते हैं: ModelState.AddModelError("AKeyIMadeUp", "The value you entered is no good");। जबकि अपनी फ़ॉर्म जमा असफल आप मॉडल

[Required] 
    [DataType(DataType.Password)] 
    [Display(Name = "Current password")] 
    public string OldPassword { get; set; } 

में एक क्षेत्र बनाने के लिए और जबकि अपनी modelState अमान्य मिला आप के रूप में की तरह है कि क्षेत्र के साथ त्रुटि संदेश बाँध सेट कर सकते हैं लगता है

1

वास्तव में आप किसी भी मान्यता संदेश सेट कर सकते हैं।

ModelState.AddModelError("OldPassword", "Current Password do not match "); 

फिर अपने त्रुटि संदेश "OldPassword"

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