Asp.net

使用 Razor 的 Html.EditFor 時限製文本框中字元的長度

  • August 22, 2018

我正在使用 MVC3 的 Razor 引擎生成視圖並讓以下程式碼行生成一個文本框

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

在相關模型中,我使用數據註釋屬性將可接受的字元數限制為 55:

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

然而,這允許使用者輸入更長的地址,然後在他們嘗試送出表單時通過驗證消息被告知。如何將文本框限制為 55 個字元,以便使用者無法輸入更多內容?

如果我自己生成文本框,我會使用 maxlength 屬性作為輸入類型,但我不確定如何使用 Html.EditFor 方法獲得相同的結果。

使用maxlengthand aTextBoxFor代替EditorFor

EditorFor沒有允許這樣做的過載。

這對您來說可能更有趣: 來自 Asp.Net MVC 中 DataAnnotations StringLength 的文本框的 maxlength 屬性

@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
})

引用自:https://stackoverflow.com/questions/11262923