首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MaxLength属性未生成客户端验证属性

MaxLength属性未生成客户端验证属性
EN

Stack Overflow用户
提问于 2011-07-24 00:10:23
回答 10查看 128.1K关注 0票数 86

我对ASP.NET MVC3客户端验证有一个奇怪的问题。我有以下类:

代码语言:javascript
复制
public class Instrument : BaseObject
{
    public int Id { get; set; }

    [Required(ErrorMessage = "Name is required.")]
    [MaxLength(40, ErrorMessage = "Name cannot be longer than 40 characters.")]
    public string Name { get; set; }
}

在我看来:

代码语言:javascript
复制
<div class="editor-field">
    @Html.EditorFor(model => model.Name)
    @Html.ValidationMessageFor(model => model.Name)
</div>

下面是我为该字段的文本框生成的HTML:

代码语言:javascript
复制
<input class="text-box single-line" data-val="true" data-val-required="Name is required." id="Name" name="Name" type="text" value="">

没有MaxLengthAttribute的迹象,但其他一切似乎都正常。

你知道哪里出问题了吗?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2011-07-24 03:23:02

尝试使用[StringLength]属性:

代码语言:javascript
复制
[Required(ErrorMessage = "Name is required.")]
[StringLength(40, ErrorMessage = "Name cannot be longer than 40 characters.")]
public string Name { get; set; }

这是为了验证目的。例如,如果您想在输入上设置最大长度属性,您可以编写一个定制的数据注释元数据提供者作为shown in this post,并定制default templates

票数 156
EN

Stack Overflow用户

发布于 2013-01-05 06:34:32

我刚刚使用了一段jquery来解决这个问题。

代码语言:javascript
复制
$("input[data-val-length-max]").each(function (index, element) {
   var length = parseInt($(this).attr("data-val-length-max"));
   $(this).prop("maxlength", length);
});

选择器查找设置了data-val-length-max属性的所有元素。这是StringLength验证属性将设置的属性。

each循环遍历这些匹配项,并将解析出该属性的值,并将其分配给本应设置的mxlength属性。

只需将其添加到您的文档就绪功能,您就可以开始工作了。

票数 37
EN

Stack Overflow用户

发布于 2014-02-11 16:24:01

自MVC5.1更新以来,MaxLengthAttribute一直在运行:change notes

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6801656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档