ASP.NET ClientValidation不适用于使用jQuery.ajax生成的表单

时间:2014-06-06 09:18:34

标签: asp.net-mvc unobtrusive-validation ajax.beginform

我有一个对象列表,当我点击其中一个对象时,我打开一个Popup(DevExpress PopupControl),其中包含相应于所点击对象正确填充的输入。

为了渲染这个,我做了一个AJAX调用,(jQuery.ajax)替换弹出窗口的'body',然后打开它; 服务器使用包含整个表单的部分视图进行回答:

        var $self = $(this);
        var _idSoc = $self.data("id");

        var options = {
            url: "@Url.Action("GetPopupEditSoc", "Home")",
            type: "post",
            data: { idSoc: _idSoc }
        };

        $.ajax(options)
        .done(function (data) {
            $(".container-popupEdit").empty().append(data);
            PopupEditSociete.Show();
            $.validator.unobtrusive.parse(document);
        })
        .fail(function (data) {
            console.log("Error: ", data);
        });

以这种方式创建弹出窗口的问题我在客户端失去了验证。

我已经尝试过(当然,所有脚本都在当前页面中) - $ .validator.unobtrusive.parse(document); - 在Ajax.BeginForm选项上,onSuccess不起作用..它永远不会被称为

POPUP的内容:

    @{
        Html.EnableClientValidation();
        Html.EnableUnobtrusiveJavaScript();
    }

    @using (Ajax.BeginForm("ModificationSociete", "Home",
        new AjaxOptions
    {
        OnSuccess = "console.log('???')",
        OnBegin = "AjaxFormEditSoc_OnBegin",
        OnComplete = "AjaxFormEditSoc_OnComplete",            
        UpdateTargetId = "container-EditSocForm",
        InsertionMode = InsertionMode.Replace
    },
    new
    {
        id = "FormModificationSoc"
    }))
    {

    <div style="padding: 10px;" id="container-EditSocForm"> ......

任何想法????

1 个答案:

答案 0 :(得分:0)

要打开/关闭不显眼的JavaScript模式并默认启用/禁用整个应用程序的客户端验证,您可以使用Web.config:

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

您也可以使用代码打开或关闭它们:

HtmlHelper.ClientValidationEnabled = true;
HtmlHelper.UnobtrusiveJavaScriptEnabled = true;

除了设置标志外,您还需要包含三个脚本文件:

jQuery (~/Scripts/jquery-1.4.1.js)
jQuery Validate (~/Scripts/jquery.validate.js),
jQuery Validate for unobtrusive (~/Scripts/jquery.validate.unobtrusive.js)

请参阅以下链接了解更多信息:

http://bradwilson.typepad.com/blog/2010/10/mvc3-unobtrusive-validation.html

ASP.NET MVC 3: Required steps for unobtrusive client-side validation of dynamic/AJAX content