J'essaie de créer une zone de texte multiligne à l'aide d'ASP.NET MVC avec le code suivant.
<%= Html.TextBox("Body", null, new { TextBoxMode = "MultiLine", Columns = "55px", Rows = "10px" })%>
Il affiche simplement une zone de texte de taille fixe simple ligne.
d'autre part
<asp:TextBox runat="server" ID="Body" TextMode="MultiLine" Columns="55" Rows="10"></asp:TextBox>
affiche la vue de droite, mais dans la méthode post du contrôleur avec formCollection nommée form
form["Body"];
renvoie une valeur nulle.
Un champ de texte multiligne en HTML est <textarea>
:
<%= Html.TextArea("Body", null, new { cols = "55", rows = "10" }) %>
ou:
<%= Html.TextArea("Body", null, 10, 55, null) %>
ou même mieux:
<%= Html.TextAreaFor(x => x.Body, 10, 55, null) %>
Une autre possibilité consiste à décorer votre propriété de modèle de vue avec l'attribut [DataType]
:
[DataType(DataType.MultilineText)]
public string Body { get; set; }
et à votre avis:
<%= Html.EditorFor(x => x.Body) %>
et définir la largeur et la hauteur via CSS.
MVC4 vous devriez utiliser:
@Html.TextAreaFor(x => x.Body, 10, 15, null)
Cela permet de définir plusieurs lignes, de définir une largeur et une hauteur personnalisées, ainsi que de définir un espace réservé.
Syntaxe de Razor View
@Html.TextAreaFor(model => model.property, new { style = "width: 420px; height: 100px;", placeholder = "Placeholder here.." })
Je pense que le Html.EditorFor Est ce que vous cherchez. Ce n'est que pour MVC2 et plus cependant. Est ce que ça aide?
Si vous utilisez DataAnnotations et décorez votre propriété avec la [DataType(DataType.MultilineText)]
Attribut, MVC devrait échafauder le code HTML requis pour vous.
Dans la couche d'entité:
[MaxLength(500)]
public string Body { get; set; }
Et en vue:
@Html.TextAreaFor(model => model.Body, new { rows = 10, cols = 50 })
Solution VB.net:
@ Html.TextAreaFor (Fonction (Modèle) Model.Body, 3, 55, Nothing)