2012-05-28 27 views
10

これは一般的な種類かもしれませんが、私はeditorforフィールドの文字列inpitの数を制限したいと思います。mvc3 maxLength入力

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

これが動作するようには思えません。

答えて

21

はEditorForは、あなたが自分自身を上書きすることができ、テンプレートを使用しています

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

にそれを変更してみてください。私は彼らがこのように渡す属性を考慮に入れているとは思わない。 TextBoxFox <>はコードでそれを生成し、正常に動作するはずです。 MVC3で

+0

そして、もし私たちが結合する必要があれば。私は透かしにエディタを使用しなければならず、依然としてmaxlengthが必要です。ここで私のエディタコード '@ Html.TextBox(" "、ViewData.TemplateInfo.FormattedModelValue、 new {placeholder = ViewData.ModelMetadata.Watermark})'はどのようにしてメタデータから "max"を得ることができますか? –

+0

独自のメタデータプロバイダ(場合によっては)と、レンダリング前にHtmlOptionsに追加するカスタムヘルパー(基本的に単純なラッパー)を作成する必要があります。 –

3

、これは良好である:

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

データフィールドで許可される文字の最小と最大の長さを指定します。 as this 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

関連する問題