değerini, DefaultModelBinder.ResourceClassKey
belirterek doğrulama hatalarının yerelleştirmesi hakkında okudum, temel olarak dize değerlerini int alanında girerken veya datetime alanında bir datetime girerken bulunuyor.Yerelleştirme "{0} değeri geçersiz" int taşması durumunda
Ancak "11111111111111111111111111111111" yazarken int alan için System.OverflowException
olsun ve "The value '{0}' is invalid."
gibi görünüyor.
Doğrulama hatasının diğer MVC doğrulamasına benzer şekilde yerelleştirilmesi (bu iletiyi başka dillere çevirme) için bir yolu var mı? ModelBinders.Binders.Add(typeof(int), new IntModelBinder());
ve şimdi gayet iyi çalışıyor:
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);
}
}
Sonra basitçe kayıtlı:
Bu harika, teşekkürler! Sadece kontrol ettim ve işe yarıyor. :) – Shaddix
Sadece daha yüksek sesle işaret etmek için ... 'System.Web.Mvc.Html.ValidationExtensions.ResourceClassKey' hile olduğunu. Teşekkürler! – Zoka