使用 Razor Html.EditorFor 时限制文本框中的字符长度
Posted
技术标签:
【中文标题】使用 Razor Html.EditorFor 时限制文本框中的字符长度【英文标题】:Limiting the length of characters in a textbox while using Razor's Html.EditFor 【发布时间】:2012-07-01 01:15:15 【问题描述】:我正在使用 MVC3 的 Razor 引擎生成视图,并使用以下代码行生成文本框
@html.EditorFor(model => model.AddressLine1)
在相关模型中,我使用数据注释属性将可接受的字符数限制为 55:
[StringLength(55)]
public string AddressLine1 get; set;
但是,这允许用户输入更长的地址,然后在他们尝试提交表单时通过验证消息被告知。如何将文本框限制为 55 个字符,以便用户无法输入更多内容?
如果我自己生成文本框,我会使用 maxlength 属性作为输入类型,但我不确定如何使用 Html.EditFor 方法获得相同的结果。
【问题讨论】:
【参考方案1】:使用maxlength
和TextBoxFor
代替EditorFor
EditorFor
没有允许这样做的重载。
这对你来说可能更有趣: maxlength attribute of a text box from the DataAnnotations StringLength in Asp.Net MVC
【讨论】:
【参考方案2】: @Html.TextBoxFor(model => model.AddressLine1, new maxlength = 55)
最大长度 如果 type 属性的值为 text、email、search、password、tel 或 url,则该属性指定用户可以输入的最大字符数(以 Unicode 代码点表示);对于其他控件类型,它被忽略。
你也可以在不改变 DOM 的情况下使用 jQuery:
$('#AddressLine1').keypress(function()
return this.value.length < 55
)
【讨论】:
它在 HTML4 中完美运行。我认为它们只是 HTMl5 中的新限制。 @RaphaëlAlthaus。你是对的,我在IE8中测试过,它是支持的。我编辑了。【参考方案3】:$('#AddressLine1').keypress(function()
return this.value.length < 55
)
此 jQuery 函数适用于网络浏览器,但在移动设备上不受支持,因此在创建每个人都可以访问的网站时,请考虑
【讨论】:
以上是关于使用 Razor Html.EditorFor 时限制文本框中的字符长度的主要内容,如果未能解决你的问题,请参考以下文章
如何强制 Razor 使 Editorfor 为浮点变量输入数字类型?
ASP.NET MVC3 - 带有@Html.EditorFor 的文本区域