7

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

 @Html.EditorFor(model => model.AddressLine1)

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

[StringLength(55)]
public string  AddressLine1 { get; set; }

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

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

4

3 回答 3

10
 @Html.TextBoxFor(model => model.AddressLine1, new {maxlength = 55}) 

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

你也可以在不改变 DOM 的情况下使用 jQuery:

$('#AddressLine1').keypress(function(){
    return this.value.length < 55
})
于 2012-06-29T13:46:00.837 回答
9

使用maxlengthand aTextBoxFor代替EditorFor

EditorFor没有允许这样做的过载。

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

于 2012-06-29T13:45:37.023 回答
0
$('#AddressLine1').keypress(function(){
    return this.value.length < 55
})

此 jQuery 函数适用于 Web 浏览器,但在移动设备上不受支持,因此在创建每个人都可以访问的站点时,请考虑

于 2018-08-22T07:41:40.323 回答