我正在使用ASP.NET MVC 5和jQuery不显眼的表单字段验证。
我已正确设置了web.config设置。
如果我没有填写必填字段,我无法提交表格,光标设置为空字段。
但是,不会显示任何错误消息。
剃刀:
<div class="d-1of2 t-1of2 m-all">
@Html.LabelFor(m => m.FirstName)
@Html.MaxLengthTextBoxFor(m => m.FirstName, new { @class = "alphaonly" })
@Html.ValidationMessageFor(m => m.FirstName)
</div>
型号:
[Required]
[Display(Name = "First Name")]
[StringLength(100)]
public string FirstName { get; set; }
标记(来自“查看页面来源”):
<div class="d-1of2 t-1of2 m-all">
<label for="FirstName">First Name</label>
<input class="alphaonly" data-val="true" data-val-length="The field First Name must be a string with a maximum length of 100." data-val-length-max="100" data-val-required="The First Name field is required." id="FirstName" maxlength="100" name="FirstName" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="FirstName" data-valmsg-replace="true"></span>
</div>
所以,看起来这些不起眼的东西已经到位了。
当我调试jquery.validate.unobtrusive.js文件时,问题出现在这个函数中:
function onError(error, inputElement) { // 'this' is the form element
var container = $(this).find("[data-valmsg-for='" + escapeAttributeValue(inputElement[0].name) + "']"),
replaceAttrValue = container.attr("data-valmsg-replace"),
replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) !== false : null;
container.removeClass("field-validation-valid").addClass("field-validation-error");
error.data("unobtrusiveContainer", container);
if (replace) {
container.empty();
error.removeClass("input-validation-error").appendTo(container);
}
else {
error.hide();
}
}
变量“replaceAttrValue”是“未定义的”,因为container.attr(“data-valmsg-replace”)是“未定义的”。但是,该元素和该数据属性似乎存在。
有没有人见过这个?我显然错过了什么,但是什么?