6

Ich habe die Standard-Editor-Vorlage (Object.ascx) überschrieben, um HTML-Formular (Body) zu erzeugen, das den Richtlinien von Twitter Bootstrap (http://twitter.github.io/bootstrap/base-css.html#forms) folgt über Html.EditorForModel().EditorFür Twitter Bootstrap zum Rendern einer Formularbeschriftung, Eingabe und Validierungsmeldung

Dies funktioniert gut, es sei denn, ich möchte das Formular optimieren (z. B. die Reihenfolge ändern oder Feldgruppen hinzufügen). Ich möchte im Grunde einen Teil des obigen Codes in eine andere Editor-Vorlage trennen, die zu Property.ascx führte. Dadurch wird eine Label-, Eingabe- und Validierungsnachricht für eine bestimmte Eigenschaft ausgegeben, die über Html.Editor ("{PropertyName"}) oder Html.EditorFor (m => m. {PropertyName}) ausgeführt wird.

Das Problem mit der obigen Editor-Vorlage ist, dass es nicht die richtige Eingabe für den angegebenen Typ darstellt. Eine Date/Time-Eigenschaft wird also nur ein normales Textfeld ohne das type-Attribut darstellen.

Gehe ich den richtigen Weg? Sollte ich einen Standard-HTML-Helfer oder eine Teilansicht verwenden? Wenn ja, wie gehen wir mit der generischen Natur um?

Antwort

4

MVC 5.1 enthält einen Fix für genau diesen Fall, Bootstrap support for editor templates. Sie können zusätzliche Eigenschaften für das Markup enthalten, indem sie ein anonmyous Objekt als zweiten Parameter zu EditorFor Versorgung

@Html.EditorFor(model => model, new { htmlAttributes = new { @class = "form-control" }, }) 
+0

wie kann u eine templateeditor erstellen, die die Htmlattributes geht? –