关于twitter bootstrap 3:MVC5和Bootstrap3:Html.Editor对于错误的类? 如何改变?

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属性作为参数。 您正在使用的参数实际上是additionalViewData

使用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或更早版本,请使用@Html.TextBoxFor代替@Html.EditorFor,如以下代码所示:

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" })