模型绑定和验证错误

我使用的是asp.net MVC3,我对这项技术很陌生。

如果数据无效,我的模型会以这种方式进行设计,以使属性发出验证错误。 在这种情况下,属性不会设置无效数据。

当我重新显示我的编辑视图时,会显示验证错误消息; 但是用户以前输入的值已消失,因为它绑定的模型只包含旧有效数据。

例如,假设我有一个Person类,并且Name属性不能为空或空字符串,否则会引发验证异常并阻止设置该属性。 现在说用户从Name属性中删除值,并尝试从Web保存Person 。 验证异常将被正确抛出并处理,以将错误添加到ModelState以便将其显示在屏幕上; 然而,由于无效的空字符串从未将其添加到属性中,所以Name的旧值将重新显示。

我不知道如何解决这个问题,任何关于这个问题的建议都将不胜感激。


我的建议是允许无效的数据,但使用验证属性。 你不会保存无效的实体,所以没有问题,这是目前的标准方法。 如果你不想那样做,那么没有简单的解决方案。 最简单的解决方案是使用Request.Form中的信息


你应该实现IValidatableObject来在服务器端执行这种验证。

来自MSDN IValidatableObject接口:

提供一种使对象失效的方法。

这里例子使用IValidatableObject自定义验证,也来自MSDN。


解决这个问题的方法是创建一个ViewModel,允许输入无效数据。 这个解决方案也简化了我的ModelBinder类,因为它承担了大部分工作。

链接地址: http://www.djcxy.com/p/58301.html

上一篇: Model Binding and Validation Errors

下一篇: ASP.NET MVC 404 Error Handling