मैं निम्नलिखित मॉडल वर्ग मिल गया है (सादगी के लिए छीन लिया):ASP.NET MVC डिफ़ॉल्ट बांधने की मशीन: बहुत लंबा ints, खाली मान्यता त्रुटि संदेश
public class Info
{
public int IntData { get; set; }
}
यहाँ मेरी उस्तरा रूप है कि इस मॉडल का उपयोग करता है:
"मान 'qqqqq' नहीं क्षेत्र 'IntData' के लिए मान्य है":@model Info
@Html.ValidationSummary()
@using (Html.BeginForm())
{
@Html.TextBoxFor(x => x.IntData)
<input type="submit" />
}
अब अगर मैं टेक्स्ट बॉक्स में एक गैर संख्यात्मक डेटा दर्ज करते हैं, मैं एक सही सत्यापन संदेश अर्थात प्राप्त करते हैं।
लेकिन यदि मैं अंकों का एक बहुत लंबा अनुक्रम दर्ज करता हूं (जैसे 345234775637544), तो मुझे एक ईएमपीटीई सत्यापन सारांश प्राप्त होता है।
मेरी नियंत्रक कोड में, मुझे लगता है कि ModelState.IsValid
false
है अपेक्षा के अनुरूप है, और ModelState["IntData"].Errors[0]
इस प्रकार है:
{System.Web.Mvc.ModelError}
ErrorMessage: ""
Exception: {"The parameter conversion from type 'System.String' to type 'System.Int32' failed. See the inner exception for more information."}
(exception itself) [System.InvalidOperationException]: {"The parameter conversion from type 'System.String' to type 'System.Int32' failed. See the inner exception for more information."}
InnerException: {"345234775637544 is not a valid value for Int32."}
आप देख सकते हैं, मान्यता सामान्य रूप से काम करता है, लेकिन करने के लिए एक त्रुटि संदेश उपज नहीं है उपभोक्ता।
क्या मैं डिफ़ॉल्ट मॉडल बाइंडर के व्यवहार को ट्विक कर सकता हूं ताकि यह इस मामले में उचित त्रुटि संदेश दिखा सके? या मुझे कस्टम बाइंडर लिखना होगा?
धन्यवाद, अगर मैं डिफ़ॉल्ट बाइंडर को ट्विक करने में सक्षम नहीं हूं तो मैं इस समाधान का चयन करूंगा। – Zruty
मैं सुझाव देता हूं कि 'bindingContext.ModelName' को' bindingContext.ModelMetadata.DisplayName' 'में बदलना है, यदि आप विशेषता पर स्थानीयकृत फ़ील्डनाम चाहते हैं' [प्रदर्शन (नाम = ...)] '। – Gh61