Добавление атрибута начальной загрузки класса CSS в текстовое поле ASP.Net MVC - PullRequest
0 голосов
/ 03 мая 2018

При добавлении атрибута класса css с использованием new { @class="form-control"} в текстовое поле, созданное с помощью помощников html, атрибут добавляется в качестве значения, в то время как тот же подход прекрасно работает с элементом управления textarea.

@{
    ViewBag.Title = "New";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>New</h2>
<div>
    <div class="col-md-4">
        @using (Html.BeginForm())
        {
            <div class="form-group">
                @Html.Label("Title");
                @Html.TextBox("Title", new { @class = "form-control" })
            </div>
            <div class="form-group">
                @Html.Label("Body")
                @Html.TextArea("Body", new{ @class="form-control"} )
            </div>
        }
        <div class="form-group">
            <input class="btn btn-default" name="edit" value="edit"/>
            <input class="btn btn-default" name="save" value="Save" />
        </div>
        
    </div>
</div>

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Попробуйте сделать это вместо @Html.TextBox("Title","", new { @class = "form-control" })

Перегрузка, которую вы сейчас используете, составляет

HtmlHelper.TextBox(string name, object value)
0 голосов
/ 03 мая 2018

Вы используете эту перегрузку Html.TextBox для метода

public static MvcHtmlString TextBox(
    this HtmlHelper htmlHelper,
    string name,
    object value
)

и второй параметр задает значение для ввода, если словарь состояния модели не содержит его для ввода. Так что ваш код будет отображать что-то вроде этого

<input id="Title" name="Title" type="text" value="{ class = form-control }">

Вы должны использовать эту перегрузку, которая принимает значение и htmlAttriubutes

public static MvcHtmlString TextBox(
    this HtmlHelper htmlHelper,
    string name,
    object value,
    IDictionary<string, object> htmlAttributes
)

Используйте это так

@Html.TextBox("Title", null, new { @class = "form-control" })

Интересно отметить, что вспомогательный метод будет искать значение в словаре состояний модели, а также просматривать словарь состояний. Поэтому, если ваш метод действия устанавливает ViewBag.Title в какое-то значение, это значение будет использоваться в качестве значения ввода, если вы передадите null в качестве значения при вызове этого метода. Шаблон проекта MVC по умолчанию использует ViewBag.Title для установки заголовка страницы. Так что вы, вероятно, увидите это значение на входе.

Чтобы решить эту проблему, вы можете явно передать пустую строку вместо null

@Html.TextBox("Title", string.Empty, new { @class = "form-control" })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...