it-swarm.com.de

Wie kann ich die Spalten und Zeilen eines mehrzeiligen Editors für in ASP.MVC angeben?

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?

63
Dan Sorensen

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.

125
amit_g

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

Dieser kann auch mit weniger Aufwand verwendet werden, glaube ich (aber ich bin in MVC 5)

@Html.Description(model => model.Story, 20, 50, new { })

 enter image description here

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">
5
Khepri

in mvc 5 

              @Html.EditorFor(x => x.Address, 
              new {htmlAttributes = new {@class = "form-control", 
                   @placeholder = "Complete Address", @cols = 10, @rows = 10 } })
0
CyberNinja

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}})
0
Cobblestone1