2010-04-19 68 views
0

尝试使用DataAnnotations验证模型,但DefaulModelBinder将覆盖我的必需属性错误消息,并且从不使用我的错误消息进行无效数据输入。始终显示'价值'对'资产名称'无效。DataAnnotationsModelBinder与MVC2 RTM

在另一个问题中,我看到MVC 2使用DataAnnotationsModelBinder,但我无法在MVC 2二进制文件中找到任何类。我下载了MVC期货的源代码,并更改了某些源代码以便为.Net 4.0编译它,但尽管我已成功编译,但它存在兼容性问题,并且无法按预期工作。

任何帮助都被夸大了。

+0

这是一个升级项目吗? DefaultModelBinder存在于System.Web.Mvc命名空间中,并且应该在MVC 2中注册为默认绑定器。您是否明确将其注册到Global.asax中?如果是这样,请删除它,因为它已被默认注册。 – Jab 2010-04-19 13:06:29

+0

对不起,将DefaultModelBinder更改为DataAnnotationsModelBinder。 – yang 2010-04-19 13:11:00

+0

您的问题没有足够的信息去购买。你能回答上面的问题吗,他们仍然相关。您的Global.asax中有关活页夹的内容是什么?这是一个升级的MVC1应用程序吗? – Jab 2010-04-19 13:22:31

回答

0

这是因为当它试图将输入值转换为接收模型属性的类型时在DefaultModelBinder中引发异常。

您可以使用string作为接收模型 上的属性的类型,也可以通过实施IModelBinder来制作自定义模型联编程序并处理验证。

+0

是的,我知道这一点,我的问题就是这个,我怎样才能使用MVA 2 RTM的DataAnnotationsModelBinder。当我在模型类上使用验证属性时,DefaultModelBinder无法按预期工作。 – yang 2010-04-19 12:03:28

5

不要尝试在MVC 2 RTM中使用DataAnnotationsModelBinder。 MVC 2 RTM的DefaultModelBinder已包含DataAnnotationsModelBinder示例中存在的所有逻辑。

+0

那为什么不显示我用[Required]属性指定的错误消息?它显示“x是必填字段”。对于无效类型,它显示“x不是y的有效值”,所有标准默认模型联编程序错误消息。不应该显示我在[DataType]错误消息属性中编写的错误消息吗? – yang 2010-04-19 16:50:32

+0

它应该,是的。您的项目引用了什么版本的System.ComponentModel.DataAnnotations?也许这是版本之间的不匹配 – Jab 2010-04-19 17:54:41

+0

你的声明是什么样的?你能否向我们展示一个不符合预期的示例模型(带有属性)? – Levi 2010-04-19 18:18:54