twitter-bootstrap-3 asp.net-mvc-5 asp.net-mvc-5.1

twitter bootstrap 3 - MVC5 y Bootstrap3: Html.EditorFor clase incorrecta? ¿Cómo cambiar?



twitter-bootstrap-3 asp.net-mvc-5 (2)

Acabo de notar que MVC 5 está usando una clase diferente para los campos de entrada cuando usa EditorFor. Creo que es de una versión inferior de bootstrap, por lo que la clase actual realmente no se suma.

Estoy hablando de esto

<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>

Lo que resulta de esto:

<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>

Cuando miras la etiqueta, tiene una clase de "cuadro de texto" en lugar del "control de formulario" de Bootstrap3

Creo que leí en alguna parte que esto se debió al hecho de que MVC5 cambió a Bootstrap 3 en el último minuto o algo así.

La pregunta es: ¿Cómo cambio esa clase manualmente? Quiero poder cambiar el cuadro de texto al control de formulario. Aunque realmente no puedo encontrar el código.

También he intentado esto ya

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

Lo que no parece funcionar. Estoy perplejo. ¿Algunas ideas?

¡Gracias por adelantado!


EditorFor no acepta atributos HTML como un parámetro. El parámetro que está utilizando es en realidadViewData additionalViewData

Utilice TextBoxFor en su lugar

@Html.TextBoxFor(m => m.UserName, new { @class = "form-control" })

Editar

A partir de MVC 5.1, los atributos HTML pueden pasarse a la Plantilla de Editor utilizando esta sintaxis

@Html.EditorFor(m => m.UserName, new { htmlAttributes = new { @class = "form-control" } })


Si está utilizando el MVC 5 o la versión anterior, use @Html.TextBoxFor lugar de @Html.EditorFor como se indica en el siguiente código:

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

y si también tiene que vincularlo, el atributo modelview knockout.js entonces:

@Html.TextBoxFor(model => model.CivilStatus, new { data_bind="value: author.civilStatus", @class = "form-control" })

He usado esto con MVC4, está funcionando para mí:

@Html.TextBoxFor(model => model.FirstName, new { data_bind="value: author.firstName", @class = "form-control" })