web-dev-qa-db-fra.com

Html.TextAreaFor dans asp.net mvc

J'ai une vue asp.net mvc qui permet à l'utilisateur d'entrer une description dans une zone de texte. 

Il y a deux problèmes auxquels je suis confronté.

Soit lorsque j'agrandis la zone de texte, elle se développe sans déplacer d'autres éléments HTML, ou bien je ne suis pas en mesure de créer un champ de texte multiligne Html.TextBoxFor (). Quelqu'un peut-il suggérer une solution à cela? Si vous utilisez Textarea, comment le développer (augmenter sa taille) afin qu’il ne chevauche pas d’autres éléments ou comment utiliser Html.TextBoxFor () pour plusieurs lignes?

Voici à quoi ressemble mon code 

<% using (Html.BeginForm())
        { %>
     <%: Html.ValidationSummary(true)%>

    <fieldset>

        <div class="editor-label1">
            <%: Html.LabelFor(Model => Model.PackageID)%>
        </div>
        <div class ="editor-field1">
             <%: Html.HiddenFor(Model => Model.PackageID)%>
              <%: Html.DisplayFor(Model => Model.PackageID)%>
             <%: Html.ValidationMessageFor(Model => Model.PackageID)%>
        </div>

         <div class="editor-label1">
            <%: Html.LabelFor(Model => Model.PackageName)%>
        </div>
        <div class ="editor-field1">
            <%: Html.TextBoxFor(Model => Model.PackageName)%>
            <%: Html.ValidationMessageFor(Model => Model.PackageName)%>
        </div>

        <div class="editor-label1">
            <%: Html.LabelFor(Model => Model.PackageDesc)%>
        </div>
        <div class ="editor-field1" style= "padding-bottom: 50px; margin-bottom: 150px">
            <%: Html.TextBoxFor(Model => Model.PackageDesc, new { TextMode = TextBoxMode.MultiLine, cols = "55", rows = "10" })%>

            <%: Html.ValidationMessageFor(Model => Model.PackageDesc)%>
        </div>

         <div class="editor-label1">
            <%: Html.LabelFor(Model => Model.PackageTitle)%>
        </div>
        <div class ="editor-field1">
            <%: Html.TextBoxFor(Model => Model.PackageTitle)%>
            <%: Html.ValidationMessageFor(Model => Model.PackageTitle)%>
        </div>
        <div class ="editor-label">
            <%: Html.Label("Project ID") %>
        </div>
        <div class="editor-field">
            <%:Html.DropDownList("ProjectID", (IEnumerable<SelectListItem>)ViewData["projects"])%>
        </div>
         <div>
                <input type="submit" value="Save Edit" />
         </div>
    </fieldset>
    <% } %>
14
Ajai

Rendre TextArea à l'aide de l'assistant Html de ASP.NET MVC et le redimensionner sont deux préoccupations différentes. Lorsque vous utilisez Html helper, vous pouvez ajouter une classe à textarea comme

<%:Html.TextAreaFor(x => x.SomeProperty, new { @class = "resizer" }) %>

Ensuite, vous pouvez accrocher cette classe à jQuery pour la rendre redimensionnable lorsqu’elle est rendue sur la page Web. Veuillez vous référer à Implémenter une zone de texte redimensionnable? pour plus d'informations sur la possibilité de redimensionner votre textarea

20

Utilisez le code ci-dessous lorsque vous utilisez Razor

   @Html.TextAreaFor(model => model.Comments, 10, 40, null);
22
GleDel

Mieux encore, si vous souhaitez calculer automatiquement le nombre de lignes de la zone de texte, vous pouvez utiliser cette option.

@Html.TextAreaFor(m => m.Comments, Model.Comments.Count + 1, 40, null)
0
Zarko Eeternal