2012-05-28 38 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

相关问题