我正在使用ASP.NET MVC。在cshtml文件中,我使用validator plugin作为验证字段。验证发生在一个简单的字段上。是cshtml文件中的代码字段:
Html.Bootstrap().FormGroup().TextBoxFor(model => model.EAN).Label()).Class("col-lg-6")).Class("row")
ViewModel字段代码:
[Display(Name = "Kod EAN")]
[RegularExpression("[0-9]{13}",ErrorMessage = "Kod EAN powinien zawierać 13 znaków")]
public string EAN { get; set; }
在View i渲染脚本中:
Scripts.Render("~/bundles/jqueryval")
我使用Ajax搜索并添加我的字段的信息。这是我的Ajax POST
$(document).ready(function () {
function pagination() {
$('#result-table').each(Utils.Pagination);
}
function getData(id) {
$.ajax({
url: "GetSpecific",
dataType: "json",
method: "POST",
cache: false,
data: {
id: id
}
}).success(function (result) {
if (result == null) return;
for (var propName in result) {
$(".panel [Name$='." + propName + "']").val(result[propName]);
}
clear();
});
}
function clear() {
$("#result-table").html("");
$(".modal input").val("");
$(".pager").remove();
}
function search() {
var form = $("#search-entry-form :input").serialize();
$.ajax({
url: $('#search-entry-form form').attr('action'),
dataType: "html",
method: "POST",
cache: false,
data: form
}).success(function (result) {
$("#result-table").html(result);
$(".select-specific").on("click", function () { getData($(this).data("specific")) });
pagination();
});
}
$("#search-specific").on("click", search);
});
当我尝试为字段添加值时,一切正常。第一个问题是验证隐藏字段。我将setDefaults添加到我的验证器中。 这是隐藏验证的setDefaults选项:
$.validator.setDefaults({
ignore: "",
});
但是在Ajax POST调用之后添加隐藏验证后,验证不起作用。在Ajax之后,我看到了消息验证字段,但提交了工作。