2012-05-28 14 views
10

bu tür bir genel olabilir, ancak bir editorfor alanındaki inpit karakter sayısını sınırlamak istiyorum.mvc3 maxLength girişi

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

Bu işe yaramaz.

cevap

21

EditorFor kendini geçersiz kılabilirsiniz şablonlar kullanır

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

değiştirmeyi deneyin. Bunun gibi aktardığınız nitelikleri hesaba kattıklarını sanmıyorum. TextBoxFox <> bunu kod olarak üretir ve iyi çalışmalıdır.

+0

Ve eğer birleştirmemiz gerekirse. Filigran için editör kullanmalı ve hala maksimum uzunluğa ihtiyacım var. Burada benim editör kodum @ Html.TextBox ("", ViewData.TemplateInfo.FormattedModelValue, yeni {placeholder = ViewData.ModelMetadata.Watermark}) 'meta verilerden nasıl" max "alabilirim? –

+0

Kendi meta veri sağlayıcınızı (muhtemelen) ve görüntülemeden önce HtmlOptions'a ekleyen özel bir yardımcı yazmacı (temel olarak basit bir sarıcı) yazmanız gerekir. –

3

MVC3, bu daha iyidir:

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

bir veri alanında izin verilen karakter minimum ve maksimum uzunluğu belirtir. , bu https://stackoverflow.com/a/6802739/2127493

+0

Bu benim için işe yaramadı, ne '' MaxLength' ne de 'StringLength'' maxlength' özniteliğini ekledim, bunun yerine sadece 'data-val-length-max' ve' data-val-maxlength-max'. – MushyPeas

5

Bunu, EditorFor'u kullanarak ve birden çok özniteliği kullanarak IE11'de çalışmayı başarabildim.

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

MVC5 Razor ile çalışmaz. – iberodev

+1

Bu, benim için çalıştığı için yeniden yükleme: '@ Html.EditorFor (model => model.CourseNumber, yeni {htmlAttributes = new {maxlength = 10}})' – Reyhn