2012-05-28 41 views
10

這可能是一種普遍的,但我想限制編輯字段中的字符inpit數量。mvc3 maxLength輸入

@html.EditorFor(m=>m.id,new {@maxlength="10"}) 

這似乎不起作用。

回答

21

嘗試將其更改爲

@Html.TextBoxFor(m=> m.id, new { maxlength="10" }); 

EditorFor使用模板,你可以重寫你自己。我不認爲他們考慮到你通過這樣的屬性。 TextBoxFox <>在代碼中生成它,並應該正常工作。

+0

如果我們需要合併,該怎麼辦。我必須使用編輯器來處理水印,並且仍然需要maxlength。這裏是我的編輯器代碼'@ Html.TextBox(「」,ViewData.TemplateInfo.FormattedModelValue, new {placeholder = ViewData.ModelMetadata.Watermark})'我怎樣才能從元數據中獲得「max」? –

+0

你必須編寫你自己的元數據提供者(可能)和一個自定義助手,在渲染之前添加到HtmlOptions(基本上是一個簡單的包裝)。 –

3

在MVC3,這是更好的:

[StringLength(10, ErrorMessage = "Name cannot be longer than 10 characters.")] 
public string Name { get; set; } 

指定允許在一個數據字段中的字符的最小和最大長度。 as shown in https://stackoverflow.com/a/6802739/2127493

+0

這對我不起作用,MaxLength和StringLength都沒有添加屬性maxlength,而只有'data-val-length-max'和'data-val-maxlength-max'。 – MushyPeas

5

我能夠使用EditorFor和使用多個屬性在IE11中工作。

@Html.EditorFor(model => model.CourseNumber, new { htmlAttributes = new { @style = "width:100px", @maxlength="10" } }) 
+0

不適用於MVC5 Razor。 – iberodev

+1

Upvoting因爲這對我有效:'@ Html.EditorFor(model => model.CourseNumber,new {htmlAttributes = new {maxlength = 10}})' – Reyhn

相關問題