1

当我尝试在应用程序中实现 ASP.net MVC 3 Unobtrusive Client Validations 时,呈现的 html 没有生成由 JQuery 生成的 span 标签。

我只有以下渲染 html,并且我使用 JQuery 模式弹出窗口作为我的部分视图的容器。

<input data-val="true" data-val-required="The City field is required." id="City" name="City" type="text" value="Seattle" />

但是,当我在没有弹出 JQuery 模式的情况下使用不显眼的客户端验证时,它在同一应用程序中正常工作,如下所示。

<div class="editor-field">
  <input data-val="true" data-val-required="The City field is required." id="City" name="City" type="text" value="Seattle" />
  <span class="field-validation-valid" data-valmsg-for="City" data-valmsg-replace="true"></span>
</div>

在 JQuery Modal Popup 中使用 Unobtrusive Client 验证时,我需要实现什么吗?

jQuery 弹出代码

 $(document).ready(function () {
        $('#actionPanelDialogs div').dialog({
            autoOpen: false,
            modal: true,
            width: 700,
            appendToBody: true
        });


        $('#actions a').click(function (event) {
            event.stopPropagation();
            event.preventDefault();
            var link = $(this);
            var action = link.attr('href');
            var dialogDivId = link.attr('rel');

            var dialogDiv = $('#' + dialogDivId);

            $.get(action, null, function (data) {
                dialogDiv.html(data);

                dialogDiv.dialog('open');                

            });
            return false;
        });
 });
4

4 回答 4

8

您必须手动触发对添加到 DOM 的任何新元素的解析。

jQuery.validator.unobtrusive.parse("#modalPopup"); 

如果您使用的是 jQuery UI

$( ".selector" ).dialog({
   open: function(event, ui) {
      jQuery.validator.unobtrusive.parse(ui);
   }
});
于 2011-09-30T03:53:01.967 回答
0

发现了问题,

我使用表单 html 来创建表单元素,如下所示。

<form  action="@Url.Action("Create", "Person")" enctype="multipart/form-data" method="post" id="contactForm">

当我使用 Html 助手时,它工作正常。

@{using (Html.BeginForm("Create", "Person", new { enctype = "multipart/form-data", id = "contactForm" }))
于 2011-09-30T06:04:57.817 回答
0

对于使用引导模式的任何人,请使用以下代码:

$('#myModal').on('shown.bs.modal', function () {
    jQuery.validator.unobtrusive.parse($(this));
})

感谢 Josh 的勇气。

于 2013-10-04T06:06:47.827 回答
0

尝试了所有方法,这对我有用:

$(".showModal").click(function () {
            var id = $(this).attr("data-id");
            $("#modal").load("/Controller/Action?id=" + id, function () {
                $("#modal").modal();
                $.validator.unobtrusive.parse($("#modal"));
            })
        });
于 2015-09-16T16:06:55.783 回答