我正在使用实体框架+ SQL Server数据库,并使用DataAnnotations部分类来验证数据。对于像Required和Range这样的东西,这可以正常工作,但我无法使DataType验证器正常工作。MVC2:使用DataAnnotations来验证数据类型
这里是(自定义)注释的例子:
[DataTypeWholeNumberAttribute(ErrorMessage = "Zip must be a whole number")]
public object Zip{ get; set; }
...和控制器代码...
[HttpPost]
public ActionResult Edit(NamedInsuredViewModel viewModel)
{
try
{ //breakpoint here (opening squiggly bracket) shows .Zip is already null
if (ModelState.IsValid)
...save, etc...
}
}
而且我知道发生了什么:邮编中的数据类型数据库是int,因此默认验证正在捕获,并且在我的验证器可以到达之前应用通用错误消息“value [x]对[FieldName]无效”(为了证明这一点,我还添加了相同的验证器到一个字符串字段,它工作得很好)。我不知道的是,我怎么能解决这个问题(不,我不能改变数据库使用字符串的一切)?
在这篇文章中提供了一些建议(http://forums.asp.net/p/1608322/4162819.aspx#4162819),但到目前为止没有任何帮助。
在此先感谢。
PS - 是否真的没有办法验证原始数据类型而不创建自定义属性?
为什么Zip是一个对象?为什么它不是一个整数? – jfar 2010-11-10 16:45:35