部分视图-客户端验证不适用于jquery ajax post

部分视图-客户端验证不适用于jquery ajax post,jquery,asp.net-mvc,asp.net-mvc-4,razor,unobtrusive-validation,Jquery,Asp.net Mvc,Asp.net Mvc 4,Razor,Unobtrusive Validation,在索引页面中,我显示员工列表,当用户单击编辑链接时,我显示编辑视图 此编辑视图呈现局部视图(_EditPartial)以显示可编辑的不同字段 当用户单击save按钮时,我想进行一次Ajax post调用 我想在将数据发布到服务器之前验证输入。我尝试使用不引人注目的验证,但对我来说,验证根本不会触发。下面是代码片段 ClientValidationEnabled&UnobtrusiveJavaScriptEnabled在web.config中启用 代码片段 部分视图代码 =============

在索引页面中,我显示员工列表,当用户单击编辑链接时,我显示编辑视图

此编辑视图呈现局部视图(_EditPartial)以显示可编辑的不同字段

当用户单击save按钮时,我想进行一次Ajax post调用

我想在将数据发布到服务器之前验证输入。我尝试使用不引人注目的验证,但对我来说,验证根本不会触发。下面是代码片段

ClientValidationEnabled&UnobtrusiveJavaScriptEnabled在web.config中启用

代码片段

部分视图代码 ===============

模型

公共部分类雇员 { 公职人员() { this.employeerolemappings=new List(); }

    public int id { get; set; }
    [Required]
    public string name { get; set; }

    [Required]
    public Nullable<int> age { get; set; }
    [Required]
    public string address { get; set; }
public int id{get;set;}
[必需]
公共字符串名称{get;set;}
[必需]
公共可空年龄{get;set;}
[必需]
公共字符串地址{get;set;}
}

    public int id { get; set; }
    [Required]
    public string name { get; set; }

    [Required]
    public Nullable<int> age { get; set; }
    [Required]
    public string address { get; set; }
我检查呈现的html代码。数据val=“true”随不同字段一起出现


任何人都可以帮助我们如何在ajax post调用中使用客户端验证

您必须检查您的表格是否有效。在代码中,
$(this)
引用的是btnSave按钮,而不是表单

尝试将代码更改为:

<script type="text/javascript">
    $(document).ready(function () {

        $("#btnSave").click(function () {

            var v = $('form').valid();

            var data = $('form').serialize();

            $.ajax({
                type: "POST",
                url: "@Url.Action("Edit")",
                data: data,
                cache: false
            })
            .fail(function (xhr, textStatus, errorThrown) {
                alert(xhr.responseText);
            })
            .success(function () {
                alert("Success");
            });
        });
    });
</script>

$(文档).ready(函数(){
$(“#btnSave”)。单击(函数(){
var v=$('form').valid();
var data=$('form').serialize();
$.ajax({
类型:“POST”,
url:“@url.Action”(“编辑”)”,
数据:数据,
缓存:false
})
.fail(函数(xhr、textStatus、errorshown){
警报(xhr.responseText);
})
.success(函数(){
警惕(“成功”);
});
});
});

在收到ajax响应后添加此代码:

$("form").each(function () { $.data($(this)[0], 'validator', false); });
$.validator.unobtrusive.parse("form");
<script type="text/javascript">
    $(document).ready(function () {

        $("#btnSave").click(function () {

            var v = $('form').valid();

            var data = $('form').serialize();

            $.ajax({
                type: "POST",
                url: "@Url.Action("Edit")",
                data: data,
                cache: false
            })
            .fail(function (xhr, textStatus, errorThrown) {
                alert(xhr.responseText);
            })
            .success(function () {
                alert("Success");
            });
        });
    });
</script>
$("form").each(function () { $.data($(this)[0], 'validator', false); });
$.validator.unobtrusive.parse("form");