MVC5 and Bootstrap3: Html.EditorFor wrong class? How to change?
我只是注意到,在使用EditorFor时,MVC 5为输入字段使用了不同的类。 我认为它来自较低版本的引导程序,因此当前的类并没有真正增加。
我在说这个:
1 2 3 4 | @Html.LabelFor(model => model.Contact.CellphoneNo, new { @class ="control-label col-md-4"}) @Html.EditorFor(model => model.Contact.CellphoneNo) @Html.ValidationMessageFor(model => model.Contact.CellphoneNo) |
结果如下:
1 2 3 4 | <label class="control-label col-md-4" for="Contact_CellphoneNo">CellphoneNo</label> <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> |
当您查看标记时,它具有一个"文本框"类,而不是Bootstrap3的"表单控件"
我想我在某处读到这是由于MVC5在最后一分钟切换到Bootstrap 3的事实。
问题是:如何手动更改该类? 我希望能够将文本框更改为表单控件。 我确实找不到代码。
我也已经尝试过了
1 2 | @Html.EditorFor(model => model.CivilStatus, new { @class ="form-control" }) @Html.ValidationMessageFor(model => model.CivilStatus) |
这似乎不起作用。 我很沮丧 有任何想法吗?
提前致谢!
EditorFor不接受HTML属性作为参数。 您正在使用的参数实际上是
使用TextBoxFor代替
1 | @Html.TextBoxFor(m => m.UserName, new { @class ="form-control" }) |
编辑
从MVC 5.1开始,可以使用以下语法将HTML属性传递给EditorTemplate
1 | @Html.EditorFor(m => m.UserName, new { htmlAttributes = new { @class ="form-control" } }) |
如果使用的是MVC 5或更早版本,请使用
1 | @Html.TextBoxFor(model => model.CivilStatus,new { @class ="form-control" } |
并且如果您还必须将其绑定为kickout.js modelview属性,则:
1 | @Html.TextBoxFor(model => model.CivilStatus, new { data_bind="value: author.civilStatus", @class ="form-control" }) |
我已经在MVC4中使用了它,它对我有用:
1 | @Html.TextBoxFor(model => model.FirstName, new { data_bind="value: author.firstName", @class ="form-control" }) |