Вы должны вызывать ModelState.AddModelError
для каждой ошибки, которая есть в вашем контроллере, ИМХО, не рекомендуется смешивать логику проверки с тем, как все отображается в пользовательском интерфейсе.Фактически, шаблон MVC - это разделение трех задач: модели (данных), контроллера (логика, например, проверка) и представлений (пользовательский интерфейс).
Так что я бы сделал что-то вродеthis:
if (string.IsNullOrEmpty(creditCard.CardNumber))
{
ModelState.AddModelError("PaymentAmount", "Credit card number is required.");
}
if (string.IsNullOrEmpty(creditCard.ExpirationDateMonth) || string.IsNullOrEmpty(creditCard.ExpirationDateYear))
{
ModelState.AddModelError("PaymentAmount", "Expiration date is required.");
}
if (string.IsNullOrEmpty(creditCard.NameOnCard))
{
ModelState.AddModelError("PaymentAmount", "Name is required.");
}
[…]
Тогда, по вашему мнению, вы можете использовать следующий помощник HTML для рендеринга каждой ошибки в списке:
Если вы используете ASP.NET Core:
<div asp-validation-summary="ValidationSummary.ModelOnly"></div>
Если вы используете предыдущие версии ASP.NET MVC:
@Html.ValidationSummary()
Это создаст HTML, который можно стилизовать с помощью CSS.
См. здесь для получения дополнительной информации, если вы используете ядро asp.net или здесь для примера, если вы используете предыдущую версию ASP.NET MVC.
Если вы хотите отобразить ошибкипо-другому вы можете получить доступ к ошибкам прямо в своем представлении или, что еще лучше, прокрутить свой собственный помощник, посмотреть ответы на этот вопрос: Как получить коллекцию ошибок состояния модели в ASP.NET MVC?