gpt4 book ai didi

javascript - MVC 客户端验证的某处缺少链接

转载 作者:行者123 更新时间:2023-11-30 16:58:30 25 4
gpt4 key购买 nike

我在 MVC 项目中使用客户端验证,但我使用它的方式有点复杂,所以我想我错过了某个地方导致你需要的东西链中断的东西进行设置以使其正常工作。

据我了解,这是完整的图片:

  1. 您需要加载以下 JS 库:jQuery、jQuery Validate 和 Microsoft Unobtrusive Validation
  2. 您需要在 Web.config 中启用客户端验证和非侵入式验证。
  3. 您需要将一些验证属性应用于您的模型。
  4. 您需要在 View 中包含某种类型的错误显示。

我相信我已经完成了所有这些,但是我的特定解决方案的某些部分使事情变得复杂,也许有人可以帮助我解决这个问题。

在我的例子中,我已经包括了所有的 JS 库。我检查过我的 Web.config 看起来像这样:

<configuration>
[...]
<appSettings>
[...]
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
[...]
</appSettings>
[...]
</configuration>

我已将一些验证属性应用于我的模型:

public class CreateStudentEventViewModel : IValidatableObject
{
[Required]
public DateTime StartDate { get; set; }
}

我在 View 中显示了验证结果:

@using (Html.BeginForm([...]))
{
[...]
@Html.ValidationSummary()
[...]
}

但是,当我单击提交按钮时,会发生正常提交。我怀疑这是因为我管理表单提交的方式。我实际上是通过 AJAX 将表单加载到模式中。我怀疑发生的事情是因为页面加载时 DOM 中不存在表单,MVC 没有正确地将其提交监听器附加到表单。

废话少说,我的问题是:

有没有办法手动附加非侵入式验证提交监听器或手动触发非侵入式验证?

我是不是走错了路,还有别的地方不对吗?

最佳答案

您还没有显示您包含的文件,但它们需要是 jquery.{version}.jsjquery.validate.jsjquery。 validate.unobtrusive.js.

但问题是您向页面添加了动态内容。首次加载页面时,jquery.validate.unobtrusive 解析表单控件并为每个元素生成验证规则。如果向 DOM 添加更多表单控件,则需要重新解析验证器,以便客户端验证可以应用于这些控件。

$('form').data('validator', null);
$.validator.unobtrusive.parse($('form'));

关于javascript - MVC 客户端验证的某处缺少链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29268934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com