【问题标题】:MVC 3 Remote Validation, problem with duplicate check in Edit viewMVC 3远程验证,编辑视图中的重复检查问题
【发布时间】:2011-08-16 12:16:23
【问题描述】:

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

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

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

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

提前感谢您的任何回答!

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 我认为这与他的要求无关。
    • 哎呀,当我按下回车键时输入了评论!视图模型允许我将不同视图中发生的事情分开,然后我能够在编辑视图中排除原始电子邮件,同时仍可针对其他电子邮件进行验证。再次感谢
    【解决方案2】:

    我解决这个问题的方法是使用 2 种不同的验证方法;一个采用单个参数(用户名),一个采用 2 个参数(新用户名、原始用户名)。 Edit 方法根据 2 参数方法进行验证,在该方法中查找新用户名,除非它与原始用户名匹配。

    【讨论】:

    • 这个建议和上述答案的结合解决了我的问题。谢谢!
    猜你喜欢
    • 2012-03-30
    • 2011-07-31
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多