2011-08-16 38 views
3

我正在使用远程验证来确保用户类中的电子邮件和用户名字段阻止用户输入数据库中已存在的用户名和/或电子邮件。MVC 3远程验证,重复签入问题编辑视图

这对创建视图很好,但是我在编辑视图中遇到的显而易见的问题是,当我尝试保存给定用户的某些更改时 - 我在用户名和电子邮件上收到了相同的验证消息,已经存在于数据库中!因此,阻止我编辑任何人,因为他们的电子邮件和用户名已经存在。

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

任何提示/技巧围绕此将不胜感激。也许有一种方法可以使验证仅在创建视图中工作?尽管理想情况下,我希望在编辑视图中进行验证,只是在验证检查中排除用户自己的姓名和电子邮件。

在此先感谢您的任何答案!

回答

3

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

+0

我不认为这与他的要求有关。 –

+0

你做了伎俩感谢达林。 – DevDave

+0

哎呀,当我按下输入时输入了评论!视图模型允许我分开发生在不同视图中的事件,然后我可以在编辑视图中排除原始邮件,同时仍然对其他电子邮件进行验证。再次感谢 – DevDave

1

我周围的问题是有2种不同的验证方法;一个接受一个参数(用户名),另一个接受2个参数(新的用户名,原始用户名)。 Edit方法使用2参数方法进行验证,它将查找新的用户名,除非它与原始用户名匹配。

+0

这个建议和上述答案的组合解决了我的问题。谢谢! – DevDave