ASP MVC 4客户端字符最大验证不显示消息

Posted

技术标签:

【中文标题】ASP MVC 4客户端字符最大验证不显示消息【英文标题】:ASP MVC 4 client side character max validation not showing message 【发布时间】:2015-01-12 12:31:19 【问题描述】:

我尝试使用 ASP MVC 4 客户端验证在特定字段上设置字符限制。不幸的是,该字段可以通过下拉列表自动填充,并且由于值由我们的员工维护,有时输入的值大于 12 个字符或空格过多。

客户端验证似乎可以很好地捕获该字段(以红色突出显示并且不允许表单发布),但我不会显示该消息。我们还有其他相同形式的字段,所以我不确定发生了什么。显然我们的 jQuery 脚本和@html.ValidationSummary(true) 命令设置正确

型号

    [MaxLength(12, ErrorMessage = "Maximum 12 characters")]
    public string DRMCompanyId  get; set; 

查看

<div class="M-editor-label">
    @Html.LabelFor(model => model.DRMCompanyId, new @class="required")
</div>
<div class="M-editor-field">
    @Html.TextBoxFor(model => model.DRMCompanyId, new  maxLength = 10 )
    @Html.ValidationMessageFor(model => model.DRMCompanyId)
</div>

以下验证工作仅供参考。该字段的格式相同:

型号

    [DisplayName("Effective Date")]
    [Column(TypeName = "DateTime")]
    [DisplayFormat(DataFormatString = "0:d", ApplyFormatInEditMode = true)]
    public DateTime? EffectiveDate  get; set; 

查看

<div class="M-editor-field">          
    @Html.TextBoxFor(model => model.EffectiveDate, new  maxlength = 10 )
    @Html.ValidationMessageFor(model => model.EffectiveDate)
</div>

【问题讨论】:

MaxLengthMinLength 自 MVC 5.1 What's New in ASP.NET MVC 5.1 起才支持非侵入式验证。 请查看我的回答 【参考方案1】:

请使用以下属性代替您的:

[StringLength(12, ErrorMessage = "Maximum 12 characters")]

这是适合您目的的正确 DataAnnotation。

More info about this attribute

【讨论】:

【参考方案2】:

使用 [StringLength(12, ErrorMessage = "Maximum 12 characters")]

fiddle

【讨论】:

以上是关于ASP MVC 4客户端字符最大验证不显示消息的主要内容,如果未能解决你的问题,请参考以下文章

如何对asp.net mvc 4中的select2字段进行强制字段验证

ASP.NET MVC 客户端电子邮件验证不起作用

ASP.NET MVC 项目中的客户端验证未验证规则

Asp.net 客户端验证错误消息不断显示来自 jquery 的值更改

使用 qTip jQuery 插件的 ASP.NET MVC 验证

ASP .NET MVC在每个字段级别禁用客户端验证