gpt4 book ai didi

jquery - ValidationMessageFor 未渲染错误消息

转载 作者:行者123 更新时间:2023-12-01 00:33:27 28 4
gpt4 key购买 nike

我有一个部分 View :

 @Html.EditorFor(model => model.BM)
@Html.ValidationMessageFor(model => model.BM)

在主视图中,如果我这样做:

@using (Html.BeginForm())
{
@Html.Partial("QuoteStep1", Model)
}

然后调用 $('form').validate() 验证表单,如果我不填写数据,则会显示错误消息。

但是,如果我使用 AJAX 调用加载部分 View ,则调用 $('form').validate() 仍然有效(它正确返回 true 或 false),但不再显示错误消息!

我在某处读过,我应该将以下内容添加到部分 View 的顶部:

@if (this.ViewContext.FormContext == null) 
{
this.ViewContext.FormContext = new FormContext();
}

但是根本没有任何效果。

[编辑:我的研究更新]

经过两个多小时的调试,我发现了一些事情。首先,因为我使用 AJAX 请求加载表单内容,所以新添加的 HTML 控件不是 DOM 的一部分。因此,jquery 验证器无法了解这些控件。

因此,在 AJAX 成功回调中添加以下代码行应该可以解决问题:

$.validator.unobtrusive.parse($('form'));

这是在 AJAX 结果添加到 DOM 后立即设置的。

当我进一步调试验证器时,我可以看到代码被调用:

 $(selector).find(":input[data-val=true]").each(function () {
$jQval.unobtrusive.parseElement(this, true);
});

意思是,它找到了新添加的输入框。

在 $jQval.unobtrusive.parseElement 方法中,执行以下代码:

 this.adapt({
element: element,
form: form,
message: message,
params: paramValues,
rules: rules,
messages: messages
});

元素是我的文本框,表单是 View 表单,消息是“BM 必须是数字”。所以我觉得一切都很好。

但是你猜怎么着...验证错误消息仍然没有显示!

有jquery大师可以帮忙吗? :)

最佳答案

我也对这个问题进行了很多研究,我发现它对我有帮助:只需添加$("#myForm").valid();与:

<script src='@Url.Content("~/Scripts/jquery.validate.js")' type='text/javascript'></script>
<script src='@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")' type='text/javascript'></script>

关于jquery - ValidationMessageFor 未渲染错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14781908/

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