Wie gebe ich in ASP.MVC 3 die Spalten und Zeilen für ein mehrzeiliges EditorFor
(Textfeld) an? Ich verwende [UIHint("MultilineText")]
, kann aber keine Dokumentation finden, wie Attribute für den Textbereich hinzugefügt werden.
Gewünschtes HTML:
<textarea cols="40" rows="10"></textarea>
Relevanter Teil meines MVC 3-Modells:
[UIHint("MultilineText")]
public string Description { get; set; }
Relevanter Teil meines Razor cshtml:
<div class="editor-field">
@Html.EditorFor(model => model.Description)
</div>
Was bekomme ich in View Source:
<div class="editor-field">
<textarea class="text-box multi-line" id="Description" name="Description"></textarea>
</div>
Wie setze ich Zeilen und Spalten?
Verwenden Sie TextAreaFor
@Html.TextAreaFor(model => model.Description, new { @class = "whatever-class", @cols = 80, @rows = 10 })
oder verwenden Sie den Stil für die Klasse multi-line
.
Sie könnten auch EditorTemplate dafür schreiben.
In ASP.NET MVC 5 können Sie das [DataType(DataType.MultilineText)]
-Attribut verwenden. Es wird ein TextArea Tag gerendert.
public class MyModel
{
[DataType(DataType.MultilineText)]
public string MyField { get; set; }
}
Wenn Sie in der Ansicht die Zeilen angeben müssen, können Sie dies folgendermaßen tun:
@Html.EditorFor(model => model.MyField, new { htmlAttributes = new { rows = 10 } })
Oder nutzen Sie einfach die TextAreaFor mit der richtigen Überladung:
@Html.TextAreaFor(model => model.MyField, 10, 20, null)
Eine Option scheint CSS zu verwenden, um den Textbereich zu gestalten
.multi-line { height:5em; width:5em; }
Siehe diesen Eintrag auf SO oder diesen.
Die von Amurra akzeptierte Antwort scheint zu implizieren, dass diese Klasse bei der Verwendung von EditorFor automatisch hinzugefügt wird. Sie müssen dies jedoch überprüfen.
BEARBEITEN: Bestätigt, tut es. Ja, wenn Sie EditorFor verwenden möchten, ist die Verwendung dieses CSS-Stils genau das, wonach Sie suchen.
<textarea class="text-box multi-line" id="StoreSearchCriteria_Location" name="StoreSearchCriteria.Location">
in mvc 5
@Html.EditorFor(x => x.Address,
new {htmlAttributes = new {@class = "form-control",
@placeholder = "Complete Address", @cols = 10, @rows = 10 } })
In .net VB - können Sie die Kontrolle über Spalten und Zeilen mit folgendem in Ihrer Rasiererdatei erlangen:
@Html.EditorFor(Function(model) model.generalNotes, New With {.htmlAttributes = New With {.class = "someClassIfYouWant", .rows = 5,.cols=6}})