19

我刚刚注意到 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 的“表单控件”

我想我在某处读到,这是由于 MVC5 在最后一分钟切换到 Bootstrap 3 所致。


问题是:如何手动更改该类?我希望能够将文本框更改为表单控件。虽然我真的找不到代码。

我也试过这个

@Html.EditorFor(model => model.CivilStatus, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.CivilStatus)

这似乎不起作用。我难住了。有任何想法吗?

提前致谢!

4

2 回答 2

56

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" } })
于 2014-02-01T13:24:10.133 回答
0

如果您使用的是 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" })
于 2016-01-07T20:55:45.573 回答