使用Razor的Html.EditFor时限制文本框中的字符长度

Spe*_*ick 7 html asp.net razor asp.net-mvc-3

我正在使用MVC3的Razor引擎来生成视图,并使用以下代码行生成文本框

 @Html.EditorFor(model => model.AddressLine1)
Run Code Online (Sandbox Code Playgroud)

在相关模型中,我使用数据注释属性将可接受字符数限制为55:

[StringLength(55)]
public string  AddressLine1 { get; set; }
Run Code Online (Sandbox Code Playgroud)

但是,这允许用户输入更长的地址,然后在尝试提交表单时通过验证消息告知.如何将文本框限制为55个字符,以便用户无法输入更多内容?

如果我自己生成文本框,我会使用maxlength属性作为输入类型,但我不知道如何使用Html.EditFor方法获得相同的结果.

gdo*_*ica 9

 @Html.TextBoxFor(model => model.AddressLine1, new {maxlength = 55}) 
Run Code Online (Sandbox Code Playgroud)

maxlength
如果type属性的值是text,email,search,password,tel或url,则此属性指定用户可以输入的最大字符数(以Unicode代码点为单位); 对于其他控件类型,它将被忽略.

您也可以在不更改DOM的情况下使用jQuery:

$('#AddressLine1').keypress(function(){
    return this.value.length < 55
})
Run Code Online (Sandbox Code Playgroud)

  • 它在HTML4中完美运行.我认为它们只是HTMl5的新限制. (2认同)

Rap*_*aus 8

使用maxlengthTextBoxFor而不是EditorFor

EditorFor 没有超载允许这样做.

这对你来说可能更有趣: 来自Asp.Net MVC中DataAnnotations StringLength的文本框的maxlength属性