MVC验证-[Required]属性引发jquery JSON.parse异常
我的视图中有以下HTML:MVC验证-[Required]属性引发jquery JSON.parse异常,jquery,asp.net-mvc-4,validation,Jquery,Asp.net Mvc 4,Validation,我的视图中有以下HTML: @model PatientLookupModel @if (Model.IsModelInvalid) { @Html.ValidationSummary(false, Model.Resources.InvalidFormMessage) } @using (Html.BeginForm("Lookup", "Patient", FormMethod.Post, new { role = "form" })) { @Html.Label(Mode
@model PatientLookupModel
@if (Model.IsModelInvalid)
{
@Html.ValidationSummary(false, Model.Resources.InvalidFormMessage)
}
@using (Html.BeginForm("Lookup", "Patient", FormMethod.Post, new { role = "form" }))
{
@Html.Label(Model.Resources.PatientFirstNameLabel)
@Html.TextBoxFor(m => m.PatientFirstName, new { @class = "form-control" })
}
我的模型如下所示:
using RESOURCES = AppResources.Resources;
namespace Models
{
public class PatientLookupModel
{
[Required(ErrorMessageResourceType = typeof(RESOURCES), ErrorMessageResourceName = "Patient_Lookup_PatientFirstNameRequiredMessage")]
public string PatientFirstName { get; set; }
}
}
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/lib/jquery-{version}.js",
"~/scripts/lib/jquery.unobtrusive*",
"~/Scripts/lib/jquery.validate*",
"~/Scripts/lib/jquery.maskedinput.js"));
我的BundleConfig如下所示:
using RESOURCES = AppResources.Resources;
namespace Models
{
public class PatientLookupModel
{
[Required(ErrorMessageResourceType = typeof(RESOURCES), ErrorMessageResourceName = "Patient_Lookup_PatientFirstNameRequiredMessage")]
public string PatientFirstName { get; set; }
}
}
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/lib/jquery-{version}.js",
"~/scripts/lib/jquery.unobtrusive*",
"~/Scripts/lib/jquery.validate*",
"~/Scripts/lib/jquery.maskedinput.js"));
表单本身按预期工作。如果未输入第一个名称,则重新加载页面并填充验证摘要。问题是,当您在“名字”输入中键入某个内容,然后它失去焦点时,浏览器控制台中会引发异常:
数据
未定义
有什么想法吗?删除对
jquery.unobtrusive ajax.js
和jquery.validate*
的引用实际上是我想要做的。出于某种原因(可能是@ShukhratRaimov确定的原因),当我使用jquery1.11.1时,客户端验证会中断。实际上,我甚至不希望客户端验证—我希望应用程序发回并显示模型错误。看看这篇文章,让我知道它是否有用。@ShukhratRaimov:我以前曾尝试加载jquery的早期版本(我使用的是1.11.1),并注意到它有不同的行为。使用1.11.1,它实际上会回发,但是<1.9版本只会对元素应用一个错误类,并将它们置于焦点。我不确定这种行为是否可以接受。是的,Jquery.validate与Microsofts的低调验证冲突。抢手货