0

我正在使用 asp.net MVC3,我对这项技术非常陌生。

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

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

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

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

4

3 回答 3

1

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

于 2013-08-01T19:11:06.243 回答
0

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

从 MSDN IValidatableObject 接口

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

这里有一个示例 Using IValidatableObject Custom Validation,也来自 MSDN。

于 2013-08-01T19:11:35.717 回答
0

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

于 2013-08-20T14:08:03.683 回答