web-dev-qa-db-ger.com

MVC5 und Bootstrap3: Html.EditorFor falsche Klasse? Wie man ändert

Mir ist gerade aufgefallen, dass MVC 5 bei Verwendung von EditorFor eine andere Klasse für Eingabefelder verwendet. Ich denke, es ist eine niedrigere Version von Bootstrap, so dass die aktuelle Klasse nicht wirklich summiert.

Ich spreche darüber:

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

Welche Ergebnisse dazu:

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

Wenn Sie sich das Tag ansehen, hat es ein "Textfeld" class anstelle von Bootstrap3s "Formularsteuerung"

Ich glaube, ich habe irgendwo gelesen, dass dies an der Tatsache lag, dass MVC5 in letzter Minute auf Bootstrap 3 umgestiegen ist oder so.


Die Frage ist: Wie ändere ich diese Klasse manuell? Ich möchte in der Lage sein, das Textfeld in die Formularsteuerung umzuwandeln. Ich kann den Code jedoch nicht wirklich finden.

Das habe ich auch schon probiert

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

Welches scheint nicht zu funktionieren. Ich bin ratlos. Irgendwelche Ideen?

Danke im Voraus!

17
Dominic

EditorFor akzeptiert keine HTML-Attribute als Parameter. Der Parameter, den Sie verwenden, ist additionalViewData.

Verwenden Sie stattdessen TextBoxFor

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

Bearbeiten

Ab MVC 5.1 können HTML-Attribute mit dieser Syntax an das EditorTemplate übergeben werden

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

Wenn Sie die MVC 5 oder eine frühere Version verwenden, verwenden Sie @Html.TextBoxFor anstelle von @Html.EditorFor wie im folgenden Code angegeben:

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

und wenn Sie es auch knockout.js modelview Attribut binden müssen, dann:

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

Ich habe dies mit MVC4 verwendet, es funktioniert für mich:

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