MVC3 - Как вставить ValidationMessageFor с разрывом строкив конце? - PullRequest
5 голосов
/ 23 декабря 2011

Я проверяю около 10 входных файлов в форме.Теги ValidationMessageFor должны быть в верхней части страницы, поэтому я пишу все, например:

@Html.ValidationMessageFor(model => model.Customer.ADDRESS.NAME)
@Html.ValidationMessageFor(model => model.Customer.ADDRESS.CITY)

и так далее.Мои модели выглядят так:

[Required(ErrorMessage = Constants.ErrorMsgNameMissing)]
public string NAME { get; set; }
[Required(ErrorMessage = Constants.ErrorMsgCityMissing)]
public string CITY { get; set; }

Константы - это строки.Теперь, если показано более одного ValidationMessageFor, все они находятся в одной строке.Как вставить разрыв строки, например <br />, в конце каждого сообщения?

Это НЕ правильный путь:

@Html.ValidationMessageFor(model => model.Customer.ADDRESS.NAME)<br />
@Html.ValidationMessageFor(model => model.Customer.ADDRESS.CITY)<br />

, поскольку <br /> отображается, даже если естьнет ошибок ...;)

Заранее спасибо.

PS: было бы неплохо отобразить их в виде списка.

Ответы [ 5 ]

3 голосов
/ 23 декабря 2011

Я думаю, что вы на самом деле ищете:

@Html.ValidationSummary()
1 голос
/ 23 декабря 2011

Я не уверен, есть ли встроенный способ, но вы могли бы легко сделать другой метод Расширения:

public static MvcHtmlString ValidationMessageLineFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression) {
    return helper.ValidationMessageFor(expression) + "<br />";
}

Что-то подобное?

1 голос
/ 23 декабря 2011

Оформить Пользовательский шаблон ValidationSummary Asp.net MVC 3 .Я думаю, что было бы лучше для вашей ситуации, если бы вы имели полный контроль над тем, как выполняется валидация.Вы можете легко написать метод расширения для ValidationMessageFor.

1 голос
/ 23 декабря 2011

На самом деле, вверху должно быть:

@Html.ValidationSummary(/*...*/)

Проверки полей должны быть с соответствующими полями.

Однако, если вы абсолютно настаиваете на @Html.ValidationMessageFor(/*...*/) наверхузатем настройте их поведение макета в своем CSS и забудьте о <br /> s

1 голос
/ 23 декабря 2011

Я бы пошел с @Html.ValidationSummary () , если возможно

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