asp.net-mvc-3 - 在MVC3非强制性远程验证上强制重新验证

标签 asp.net-mvc-3 unobtrusive-validation remote-validation

这是经典的登录流程。用户可以在“新用户”或“现有用户”之间进行选择。如果用户是新用户,则登录框中的名称应针对服务器进行验证,以查看用户名是否唯一;如果是现有用户,则将跳过此检查,因为我们希望用户名已被使用(当然)。

我在 View 模型上添加了[Remote]属性,并将新用户/退出用户的单选按钮添加为“其他字段”。这样,如果远程验证是现有用户,则将仅返回true;如果不是,则检查数据库,以查看是否使用了用户名。

这非常有用,除非用户在输入用户名后决定更改单选按钮(新的/现有的)(并且远程验证已运行)。由于仅当用户名更改时(即[Remote]属性的属性),远程验证才自动运行,因此,仅更改单选按钮不会使其再次运行。

所以我的问题是,我怎么能强制再次运行远程验证?我通过在用户名输入字段上触发更改/焦点/模糊事件来尝试常见的黑客攻击,但未触发调用。我考虑过在单选按钮上添加一个类似的[Remote],但这实际上会使带有两个相同外观的错误消息(位于相同的绝对位置)的事情复杂化。

有什么办法可以触发重新验证?

最佳答案

我相信可以使用$(“#formID”)。validate()触发jquery验证

您可以在文档中找到更多选项:http://docs.jquery.com/Plugins/validationBrad Wilson's blog(您也可以在注释中找到一些信息)

您是否研究了输入具有的Data属性,也许已将其缓存了?像this这样的东西。

编辑:只是为了澄清,这就是我如何使其工作

$('#UserName').removeData('previousValue');
$('form').validate().element('#UserName');

关于asp.net-mvc-3 - 在MVC3非强制性远程验证上强制重新验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5618247/

相关文章:

c# - 如何优雅地处理时区

jquery-mobile - asp.net mvc TextAreaFor 未被验证为必填字段

c# - 验证消息包含 '{PropertyName}' 而不是属性名称

jquery - MVC 4 客户端验证不适用于使用 Ajax 加载的表单

c# - ASP.NET MVC : Additional fields are not binding for Remote validation

带有远程验证 MVC 3 的 jQuery 验证组

c# - 如何为 ASP.NET MVC3 创建全局自定义错误页面?

asp.net - 'ModelClientValidationRule' 类型存在于两个 dll 中

sql-server - MVC 3创建和修改的日期在SQL Server 2008 R2中具有默认值和触发器,但仍然想要值

c# - 模型中 2 个不同属性的相同远程验证