Используйте asp-validation-for без привязки к свойству модели

В прошлом я всегда использовал следующий код, чтобы прояснить что-то глобально, например, с помощью формы входа в систему, когда имя пользователя или пароль неверны. Я не хочу, чтобы это сообщение об ошибке связывалось с определенным свойством модели, таким как Имя пользователя или Пароль, а только с пользовательским ValidationMessage.

контроллер:

ModelState.AddModelError("Combination", "Password or username not correct.");

Посмотреть:

@Html.ValidationMessage("Combination")

В новых примерах, созданных с помощью VS17, он не использует @Html.ValidationMessageFor() а также @Html.ValidationMessage() больше, но тем легче
<span asp-validation-for="Username" class="text-danger"></span>

Теперь возникает проблема, что я не могу найти ничего подобного asp-validation="Combination" это заменяет @Html.ValidationMessage(),

Это совсем другое, я что-то упустил, или мне нужно использовать старый @Html.ValidationMessage() как альтернатива?

1 ответ

Решение

Если вы хотите установить "глобальную" ошибку проверки, вы можете просто использовать пустую строку, чтобы указать, что ошибка не относится к определенному свойству:

ModelState.AddModelError(string.Empty, "Password or username not correct.");

С этим на месте, вы можете использовать asp-validation-summary Tag-Helper для создания вашего сообщения (или сообщения - вы можете позвонить AddModelError несколько раз с string.Empty):

<div asp-validation-summary="ModelOnly"></div>

Указав ModelOnly только те сообщения проверки, которые вы добавили, используя string.Empty будет показано.

Другие вопросы по тегам