के मामले में "मान {0} के लिए स्थानीयकरण अमान्य है" को DefaultModelBinder.ResourceClassKey
निर्दिष्ट करके सत्यापन त्रुटियों के स्थानीयकरण के बारे में पढ़ा है, मूल रूप से यह int फ़ील्ड में स्ट्रिंग मान दर्ज करते समय या डेटाटाइम फ़ील्ड में डेटाटाइम नहीं होता है।इंट ओवरफ्लो
लेकिन जब मैं एक int फ़ील्ड के लिए "111111111111111111111111111111" टाइप कर रहा हूं तो मुझे System.OverflowException
मिलता है और यह "The value '{0}' is invalid."
जैसा दिखता है।
क्या स्थानीयकरण करने के लिए कोई तरीका है (उस संदेश को अन्य भाषाओं में अनुवाद करें) कि अन्य एमवीसी-सत्यापन के समान तरीके से सत्यापन त्रुटि?
public class IntModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
double parsedValue;
if (double.TryParse(value.AttemptedValue, out parsedValue))
{
if ((parsedValue < int.MinValue || parsedValue > int.MaxValue))
{
var error = "LOCALIZED ERROR MESSAGE FOR FIELD '{0}' HERE!!!";
bindingContext.ModelState.AddModelError(bindingContext.ModelName, string.Format(error, value.AttemptedValue, bindingContext.ModelMetadata.DisplayName));
}
}
return base.BindModel(controllerContext, bindingContext);
}
}
तो मैं बस इसे पंजीकृत: ModelBinders.Binders.Add(typeof(int), new IntModelBinder());
और यह अब ठीक काम करता है
यह कमाल है, धन्यवाद! बस चेक किया और यह काम करता है। :) – Shaddix
बस इसे और अधिक जोर से इंगित करने के लिए ... 'System.Web.Mvc.Html.ValidationExtensions.ResourceClassKey' चाल है। धन्यवाद! – Zoka