2012-05-28 6 views
10

Это может быть как-то общее, но я хочу ограничить количество символов inpit в поле editorfor.mvc3 maxLength input

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

Это не работает.

ответ

21

Попробуйте изменить его

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

EditorFor использует шаблоны, которые вы можете переопределить себя. Я не думаю, что они учитывают атрибуты, которые вы проходите так. TextBoxFox <> генерирует его в коде и должен работать нормально.

+0

А что, если нам нужно объединить. Я должен использовать редактор для водяных знаков, и вам все равно нужна максимальная длина. вот мой код редактора '@ 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; } 

Задает минимальную и максимальную длину символов, разрешенных в поле данных. как в этом https://stackoverflow.com/a/6802739/2127493

+0

Это не сработало для меня, ни 'MaxLength', ни' StringLength' не добавили атрибут 'maxlength', вместо этого я получил только' data-val-length-max' и 'data-val-maxlength-max'. – MushyPeas

5

Мне удалось заставить его работать в 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