【问题标题】:Twitter bootstrap model and MVC/jquery client side validationTwitter 引导模型和 MVC/jquery 客户端验证
【发布时间】:2012-12-16 22:49:28
【问题描述】:

我正在使用带有 remoteurl 的 twitter 引导模式在部分视图中加载;在这种情况下,用于重置密码表单。

我正在使用 MVC 模型绑定,并在模型上设置了数据注释,以使客户端验证能够在局部视图中进行。

但是,这不会触发客户端验证。我得到了服务器端验证,这很好,但由于某种原因,当这个表单在模式中时,它不会调用客户端验证。

jquery 验证和引导脚本在包含模式的主页中引用。

不过,我已将 jquery 和 jquery 验证脚本引用添加到局部视图的末尾,这样做确实可以确保调用客户端验证。

为什么需要将这些脚本包含在加载到模式中的部分视图中?

因为它以这种方式工作,我很乐意离开它,但是当我需要动态加载不同的 remoteUrls 时,这样做会给我的 twitter 引导模式带来另一个问题。

当在局部视图中也引用了 jquery 脚本时,模态将第一次触发,但随后出现错误。我知道这是 jquery 引用引起的问题,好像 我删除了它们,虽然我没有得到客户端验证,但我可以多次打开模式而没有任何问题。

我用来调用模态的代码是从互联网搜索中找到的,以尝试让模态刷新传递给它的不同远程 URL 的模态正文。

$('#mymodal').removeData('modal');
$('#mymodal').modal({ remote: self.remoteUrl, keyboard: true });

然后我得到的错误是第二次触发这个 $('#mymodal').modal 为空。但它总是第一次起作用。如上所述,我认为这是因为局部视图中的 jquery 脚本引用。

有人对这两个问题有什么想法吗?

【问题讨论】:

  • 也许您只需要在部分加载后触发验证,而不是引用所有脚本?当表单加载时,只需执行$("#commentForm").validate(); 之类的操作(也就是说,如果您使用的是 jquery-validate)
  • 这是有道理的,我应该意识到这将是由于 jquery 不显眼的验证,并且在页面创建时没有绑定到被拉入模态正文的动态内容。这让我有很多事情要做。很快就会确认我的解决方案。

标签: asp.net-mvc twitter-bootstrap jquery-validate modal-dialog


【解决方案1】:

我似乎最终能够让它工作的唯一方法是加载局部视图以调用以下内容:

$('#frmName').removeData("validator");
$('#frmName').removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse('#frmName');

这似乎为我调用了客户端验证。

【讨论】:

  • 为这样一个愚蠢的错误花费至少 1 小时。为什么验证器不能包含所有这些功能 :( ??
猜你喜欢
  • 2012-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-29
  • 1970-01-01
  • 2015-12-09
相关资源
最近更新 更多