Выберите asp-validation-для класса css

Мне было интересно, есть ли в asp-validation-for ядра.NET способ переопределить класс, установленный для span, или есть способ расширить помощник по тегам, чтобы учесть это. Прямо сейчас, когда происходит ошибка на стороне клиента, field-validation-error это класс, который помещается в мой элемент span Мне было интересно, есть ли способ переопределить это в.NET Core или мне придется разрабатывать / модифицировать его самому? Это кажется глупым недостатком, и я был бы удивлен, если бы не было другого способа получить то, что я ищу.

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

1 ответ

Посмотрите на сгенерированный HTML, который может отличаться в зависимости от вашей версии; у меня, как и у тебя, у меня порождает:

      <span class="field-validation-error" data-valmsg-for="FirstName" data-valmsg-replace="false">First name is required</span>

Итак, единственное, что мне нужно сделать, это стилизовать класс .field-validation-error в ccs. поскольку у меня обычно его нет, поскольку он не создается в шаблоне «Файл нового проекта», я просто добавляю его в соответствии со спецификациями.

поэтому в моем site.css я добавляю

      .field-validation-error
{
  color: red;
}

Я обычно также редактирую сам ввод; предполагая, что вы также хотите сделать это, вы можете сделать что-то вроде этого, добавив (!) маркер ошибки в правой части ввода:

      .input-validation-error {
    border-color: #dc3545;
    padding-right: calc(1.5em + .75rem);
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");
    background-repeat: no-repeat;
    background-position: right calc(.375em + .1875rem) center;
    background-size: calc(.75em + .375rem) calc(.75em + .375rem);
}

И все становится лучше. Вы можете «творить» в CSS, вы можете использовать глобальный подход, если ваше руководство по стилю позволяет это, и заявить, что:

Каждый ввод, когда он сфокусирован (скажем, выбран пользователем) и недействителен, тогда:

      input:focus:invalid {
  background: url("https://assets.digitalocean.com/labs/icons/exclamation-triangle-fill.svg") no-repeat 95% 50% lightsalmon;
  background-size: 25px;
}

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

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