MVC 验证 - [必需] 属性抛出 jquery JSON.parse 异常

Posted

技术标签:

【中文标题】MVC 验证 - [必需] 属性抛出 jquery JSON.parse 异常【英文标题】:MVC validation - [Required] attribute throwing jquery JSON.parse exception 【发布时间】:2014-10-30 14:31:00 【问题描述】:

我的视图中有以下 html

@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; 
    

我的 BundleConfig 如下所示:

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"));

表单本身按预期工作。如果未输入名字,页面将重新加载并填充验证摘要。问题是,当您在名字输入中键入内容然后它失去焦点时,浏览器控制台中会引发异常:

data 未定义。

有什么想法吗?

【问题讨论】:

***.com/a/14822755/1893261 看看这篇文章,如果有帮助请告诉我。 @ShukhratRaimov:我之前曾尝试加载早期版本的 jquery(我使用的是 1.11.1)并注意到它具有不同的行为。使用 1.11.1,它实际上会回发,但版本 【参考方案1】:

删除对jquery.unobtrusive-ajax.jsjquery.validate* 的引用实际上是我想要做的。由于某种原因(可能是@ShukhratRaimov 确定的原因),当我使用 jquery 1.11.1 时,客户端验证中断。实际上,我什至不想要客户端验证 - 我希望应用回发并显示模型错误。

【讨论】:

是的,Jquery.validate 与 Microsoft 不显眼的验证相冲突。很好的收获。

以上是关于MVC 验证 - [必需] 属性抛出 jquery JSON.parse 异常的主要内容,如果未能解决你的问题,请参考以下文章

必填字段验证在 JQuery Popup MVC 4 中不起作用

必填字段验证在 JQuery Popup MVC 4 中不起作用

必填字段验证在 JQuery Popup MVC 4 中不起作用

缺少 jquery 验证:在属性 id 之后

使用 jQuery Validator 在 MVC 3 中未正确验证小数

单选按钮验证不起作用 jquery