【问题标题】:Limiting the length of characters in a textbox while using Razor's Html.EditFor使用 Razor Html.EditorFor 时限制文本框中的字符长度
【发布时间】: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 方法获得相同的结果。

【问题讨论】:

    标签: asp.net html asp.net-mvc-3 razor


    【解决方案1】:

    使用maxlengthTextBoxFor 代替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 函数适用于网络浏览器,但在移动设备上不受支持,因此在创建每个人都可以访问的网站时,请考虑

      【讨论】:

        猜你喜欢
        • 2010-12-28
        • 1970-01-01
        • 2020-08-29
        • 1970-01-01
        • 2015-02-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-01
        相关资源
        最近更新 更多