我結束了覆蓋ModelBinder的爲int
和供應有一個本地化的錯誤消息:
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());
,現在工作得很好。
P.S.當然,我的本地化錯誤信息並沒有在模型庫中進行硬編碼,這只是一個簡化的例子:)
太棒了,謝謝!只是檢查,它的工作原理。 :) – Shaddix
只是爲了更大聲地指出......'System.Web.Mvc.Html.ValidationExtensions.ResourceClassKey'是個訣竅。謝謝! – Zoka