【问题标题】:MVC5 and Bootstrap3: Html.EditorFor wrong class? How to change?MVC5 和 Bootstrap3:Html.EditorFor 错误的类?如何改变?
【发布时间】:2014-02-24 07:34:14
【问题描述】:

我刚刚注意到 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>

当你查看标签时,它有一个 "text-box" 类,而不是 Bootstrap3 的 "form-control"

我想我在某处读到这是由于 MVC5 在最后一分钟切换到 Bootstrap 3 或其他原因。


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

我也试过了

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

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

提前致谢!

【问题讨论】:

    标签: twitter-bootstrap-3 asp.net-mvc-5 asp.net-mvc-5.1


    【解决方案1】:

    如果您使用的是 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" })
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 嗨@LostInComputer!谢谢您的意见。 TextBoxFor 是否具有与 EditFor 相同的功能?
      • stackoverflow.com/questions/4826173/…。大家的答案都是正确的。
      • 谢谢你! :) 正是我需要的
      猜你喜欢
      • 2014-02-05
      • 2019-07-14
      • 1970-01-01
      • 1970-01-01
      • 2014-09-24
      • 1970-01-01
      • 2017-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多