2012-05-28 12 views
10

może to być rodzaj ogólny, ale chcę ograniczyć liczbę znaków inpit w polu editorfor.mvc3 maxLength input

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

To nie działa.

Odpowiedz

21

Spróbuj zmienić ją

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

EditorFor wykorzystuje szablony, które można przesłonić siebie. Myślę, że nie biorą pod uwagę atrybutów, które przekazujesz w ten sposób. TextBoxFox <> generuje go w kodzie i powinien działać poprawnie.

+0

A co, jeśli musimy połączyć. Muszę użyć edytora znaków wodnych i nadal potrzebuję maksymalnej długości. tutaj jest mój kod edytora '@ Html.TextBox (" ", ViewData.TemplateInfo.FormattedModelValue, new {placeholder = ViewData.ModelMetadata.Watermark})' jak mogę uzyskać "max" z metadanych? –

+0

Musisz napisać własnego dostawcę metadanych (być może) i niestandardowego pomocnika, który dodaje HtmlOptions przed renderowaniem (w zasadzie proste opakowanie). –

3

W MVC3, to jest lepsze:

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

Określa minimalną i maksymalną liczbę znaków, które są dozwolone w polu danych. jak w tym https://stackoverflow.com/a/6802739/2127493

+0

To nie działało dla mnie, ani 'MaxLength' ani' StringLength' nie dodały atrybutu 'maxlength', zamiast tego otrzymałem tylko' data-val-length-max' oraz 'data-val-maxlength-max'. – MushyPeas

5

Udało mi się uzyskać to działa w IE11 przy użyciu EditorFor i przy użyciu wielu atrybutów.

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

Nie działa z maszyną Razer MVC5. – iberodev

+1

Uaktualnianie, ponieważ działało to dla mnie: '@ Html.EditorFor (model => model.CourseNumber, new {htmlAttributes = new {maxlength = 10}}) – Reyhn

Powiązane problemy