Установка начального текста для сообщения проверки - PullRequest
1 голос
/ 22 декабря 2011

В настоящее время я использую ValidationMessageFor, чтобы найти и отобразить ошибки в моей форме asp.net MVC3. Чтобы обеспечить это на уровне клиента, я также использую ненавязчивую проверку JQuery.

Эти методы являются фантастическими, но им, похоже, не хватает одной вещи - возможность отображать начальную подсказку, когда пользователь находится в поле формы, как в форме регистрации в Twitter . Чтобы уточнить, я хотел бы, чтобы это появилось в том же месте, что и сообщение проверки.

Может кто-нибудь сказать мне, если эта функция доступна, и если нет, то как бы я ее реализовал?

1 Ответ

2 голосов
/ 22 декабря 2011

Просто подробно остановился на моем комментарии выше

Я реализовал это путем создания html-расширения "HintFor"

public static MvcHtmlString HintFor<TModel, TValue>(this HtmlHelper<TModel> self, Expression<Func<TModel, TValue>> expression)
{
    dynamic attribute = ModelMetadata.FromLambdaExpression(expression, self.ViewData);
    return MvcHtmlString.Create(attribute.Description);
}

, которое просто отображает то, что вы задали для свойства описания на дисплее.атрибут для этого свойства viewmodel

[Display(Name = "Application Title", Description = "Description goes in here")]
public string Title { get; set; }

Затем в моем интерфейсе я отформатировал каждый шаг формы, как показано (дополнительные классы, потому что я использую библиотеку униформ для форматирования своей формы)

        <div class="question">
            @Html.LabelFor(m => m.Title, new { @class = "label" })
            <div class="formHint">
                @Html.HintFor(m => m.Title)
            </div>
            <div class="response">
                @Html.TextBoxFor(m => m.Title, new { @class = "textInput", autocomplete = "off" })
            </div>
            <div class="sidetip">
                @Html.ValidationMessageFor(m => m.Title, null, new { @class = "invalid" })
            </div>
        </div>

Затем с помощью небольшого CSS я установил класс «formhint», чтобы он не отображался, когда отображается сообщение об ошибке

.validation-summary-valid, .field-validation-valid
{
    display: none;
}

.input-validation-error + .formHint
{
    display: none !important;
}

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...