MVC 3远程验证,编辑视图中重复检查的问题

时间:2011-08-16 12:16:24

标签: asp.net-mvc-3 validation view edit

我正在使用远程验证来确保用户类中的电子邮件和用户名字段阻止用户输入数据库中已存在的用户名和/或电子邮件。

这在创建视图上工作正常,但是我在编辑视图中遇到的明显问题是,当我尝试为给定用户保存一些更改时 - 我在用户名和电子邮件上获得相同的验证消息,说他们已经存在于数据库中!因此,阻止我编辑任何人,因为他们的电子邮件和用户名已经存在。

我一直在环顾四周,感到惊讶的是我找不到类似的问题。我在创建页面上看到了许多重复名称/电子邮件/值验证的例子,但没有关于编辑视图中出现的不可避免的问题。

任何有关此方法的提示/提示都将非常感激。也许有一种方法可以使验证仅在创建视图中起作用?理想情况下,我希望在编辑视图中进行验证,只需在验证检查中排除用户自己的姓名和电子邮件。

提前感谢您的任何答案!

2 个答案:

答案 0 :(得分:3)

您应该使用视图模型。这些是专门为满足视图要求而设计的类。控制器操作应该只将视图模型传递给视图,而不传递您的域模型。因此,您将有两个控制器操作,一个用于插入,一个用于编辑,两个相应的视图模型及其各自的验证规则。

答案 1 :(得分:1)

我遇到问题的方法是使用两种不同的验证方法;一个接受一个参数(用户名),一个接受2个参数(新用户名,原始用户名)。 Edit方法根据2参数方法进行验证,除非它与原始用户名匹配,否则它将查找新用户名。