MVC 5がEditorForを使用する場合、入力フィールドに別のクラスを使用していることに気づきました。私はそれがブートストラップのより低いバージョンからのものだと思うので、現在のクラスは実際には足し合わない。
私はこれについて話している:
<div class="form-group">
@Html.LabelFor(model => model.Contact.CellphoneNo, new { @class = "control-label col-md-4"})
<div class="col-md-8">
@Html.EditorFor(model => model.Contact.CellphoneNo)
@Html.ValidationMessageFor(model => model.Contact.CellphoneNo)
</div>
</div>
これの結果:
<div class="form-group">
<label class="control-label col-md-4" for="Contact_CellphoneNo">CellphoneNo</label>
<div class="col-md-8">
<input class="text-box single-line" id="Contact_CellphoneNo" name="Contact.CellphoneNo" type="text" value="">
<span class="field-validation-valid" data-valmsg-for="Contact.CellphoneNo" data-valmsg-replace="true"></span>
</div>
</div>
タグを見ると、Bootstrap3の"form-control"の代わりに"text-box"クラスがあります。
これは、MVC5がBootstrap 3でギリギリか何かに切り替わったためです。
質問は:そのクラスを手動で変更するにはどうすればよいですか?テキストボックスをフォームコントロールに変更できるようにしたい。コードは本当に見つかりません。
私もこれをすでに試しました
@Html.EditorFor(model => model.CivilStatus, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.CivilStatus)
うまくいかないようです。私は困惑しています。何か案は?
前もって感謝します!
EditorForは、HTML属性をパラメーターとして受け入れません。使用しているパラメータは実際にはadditionalViewData
です
代わりにTextBoxForを使用してください
@Html.TextBoxFor(m => m.UserName, new { @class = "form-control" })
編集
MVC 5.1以降、この構文を使用してHTML属性をEditorTemplateに渡すことができます
@Html.EditorFor(m => m.UserName, new { htmlAttributes = new { @class = "form-control" } })
MVC 5以前のバージョンを使用している場合は、@Html.TextBoxFor
の代わりに @Html.EditorFor
次のコードで指定されています。
@Html.TextBoxFor(model => model.CivilStatus,new { @class = "form-control" }
また、それをknockout.js modelview属性にバインドする必要がある場合:
@Html.TextBoxFor(model => model.CivilStatus, new { data_bind="value: author.civilStatus", @class = "form-control" })
私はMVC4でこれを使用しました、それは私のために働いています:
@Html.TextBoxFor(model => model.FirstName, new { data_bind="value: author.firstName", @class = "form-control" })