Html.TextAreaFor в asp.net mvc - PullRequest
       40

Html.TextAreaFor в asp.net mvc

15 голосов
/ 05 мая 2011

У меня есть представление asp.net mvc, которое позволяет пользователю вводить некоторое описание в текстовое поле.

Есть две проблемы, с которыми я сталкиваюсь.

Либо, когда я расширяю текстовую область, она расширяется без перемещения других html-элементов, или я не могу создать многострочный Html.TextBoxFor ().текстовое окно.Кто-нибудь может предложить решение этой проблемы?Если использовать Textarea, как сделать так, чтобы он расширялся (увеличивался в размере), чтобы он не перекрывался с другими элементами, или как использовать Html.TextBoxFor () для многострочного?

Так выглядит мой код

<% 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>
    <% } %>

Ответы [ 3 ]

22 голосов
/ 23 ноября 2014

Используйте код ниже при использовании Razor

   @Html.TextAreaFor(model => model.Comments, 10, 40, null);
22 голосов
/ 05 мая 2011

Рендеринг TextArea с использованием помощника ASP.NET MVC Html и изменение его размера - это две разные проблемы. При использовании Html помощника вы можете добавить класс к textarea как

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

Затем вы можете подключить этот класс с помощью jQuery, чтобы сделать его изменяемого размера при отображении на веб-странице. Пожалуйста, обратитесь к Реализация изменяемого размера текстовой области? для получения информации о том, как сделать ваш textarea изменяемый размер.

0 голосов
/ 11 декабря 2017

Еще лучше, если вы хотите автоматически рассчитать количество строк в текстовой области, вы можете использовать это

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