Javascript 必需的字段验证在JQuery弹出式MVC 4中不起作用

Javascript 必需的字段验证在JQuery弹出式MVC 4中不起作用,javascript,jquery,asp.net-mvc,validation,unobtrusive-validation,Javascript,Jquery,Asp.net Mvc,Validation,Unobtrusive Validation,我有JQuery弹出窗口,我想在其上放置必需的字段验证,为此,我在模型中设置了必需的属性,并在视图中为它们设置了验证消息,但必需的字段验证在弹出窗口上不起作用。必需的字段验证在JQuery弹出窗口以外的表单上运行良好…请指导我应该如何解决此问题…以下是我的代码 模型 看法 验证程序在页面最初加载时被解析。添加动态内容时,需要重新分析验证器。在加载内容后,修改脚本以包含以下行 $(this).load(actionURL, function (html) { // Reparse the

我有JQuery弹出窗口,我想在其上放置必需的字段验证,为此,我在模型中设置了必需的属性,并在视图中为它们设置了验证消息,但必需的字段验证在弹出窗口上不起作用。必需的字段验证在JQuery弹出窗口以外的表单上运行良好…请指导我应该如何解决此问题…以下是我的代码

模型

看法


验证程序在页面最初加载时被解析。添加动态内容时,需要重新分析验证器。在加载内容后,修改脚本以包含以下行

$(this).load(actionURL, function (html) {
    // Reparse the validator
    var form = $('form');
    form.data('validator', null);
    $.validator.unobtrusive.parse(form);
    $('form', html).submit(function () {
        ....

旁注:您显示的代码不包括
@Html.ValidationMessageFor(m=>m.MaterialCode)
,但我假设这包括在内。

您是否在弹出窗口中动态加载表单(例如,使用ajax?@StephenMuecke是的,我正在使用ajax您需要重新分析验证程序。为了给出答案,你需要显示你的脚本(编辑问题以包含它)。这个JS代码和这个有什么区别@markzzz,
$(“表单”).removeData(“验证器”)
基本上与
form.data('validator',null)相同在此上下文中。第一个使用where删除先前添加的验证器,第二个使用where将其设置为
null
$(“表单”).removeData(“不引人注目的验证”)并不是必需的,因为
$.validator.unobtrusive.parse(form)有效地重置了这一点。(这提醒了我,我将补充几天前你提出的一个问题的答案:)
<li>
    @Html.LabelFor(m => m.MaterialCode)
    @Html.TextBoxFor(m => m.MaterialCode)
    @Html.HiddenFor(m => m.MaterialCodeId)
</li>
$('#btnAddCharge').on('click', function (event) {  
        event.preventDefault();
        var actionURL = '@Url.Action("Edit", "Charges", new { Id = 0, @ticketId = @TicketId, UserId = UserId })';

        $(dialogBox).dialog({
            autoOpen: false,
            resizable: false,
            title: 'Edit',
            modal: true,
            show: "blind",
            width: 'auto',
            hide: "blind",
            open: function (event, ui) {
                $(this).load(actionURL, function (html) {
                    $('form', html).submit(function () {
                        $.ajax({
                            url: this.action,
                            type: this.method,
                            data: $(this).serialize(),
                            success: function (res) {
                                if (res.success) {
                                    $(dialogBox).dialog('close');
                                }
                            }
                        });
                        return false;
                    });
                });
            }
        });

        $(dialogBox).dialog('open');
    });
$(this).load(actionURL, function (html) {
    // Reparse the validator
    var form = $('form');
    form.data('validator', null);
    $.validator.unobtrusive.parse(form);
    $('form', html).submit(function () {
        ....