【发布时间】:2014-11-04 21:10:17
【问题描述】:
我自己对可空整数和验证文本有疑问。
基本上我想更改未提供可为空的 int 时显示的验证消息
所以从
"The value 'xxxxxxxxxxxxxxxxxxxx' is invalid"
到
"Please provide a valid number"
我自己有一个像这样的自定义模型绑定器
public class IntModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var integerValue = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
if (integerValue == null || integerValue.AttemptedValue == "")
return null;
var integer = integerValue.AttemptedValue;
bindingContext.ModelState.SetModelValue(bindingContext.ModelName, bindingContext.ValueProvider.GetValue(bindingContext.ModelName));
try
{
return int.Parse(integer);
}
catch (Exception)
{
bindingContext.ModelState.AddModelError(bindingContext.ModelName, String.Format("\"{0}\" is invalid, please provide a valid number.", bindingContext.ModelName));
return null;
}
}
}
现在我已经更新了我的 global.asax.cs,所以所有可以为空的整数都使用这个模型绑定器,但是我不希望所有可以为空的整数都使用它,我只想要一个特定的模型来使用它并且只使用我的模型绑定器在该模型中的可为空整数上。有没有办法可以将此模型绑定器绑定到我的模型,并且只与可为空的 int 变量关联?
我曾尝试像这样在我的模型上使用我的模式绑定器
[ModelBinder(typeof(IntModelBinder))]
public class CreateQuoteModel
{
....
}
但它不检查可为空的整数,我想避免使用第三方插件
【问题讨论】:
标签: c# asp.net-mvc