Проверка фильтра-введите в Html.ValidationMessageFor

#c# #asp.net-mvc

#c# #asp.net-mvc

Вопрос:

У меня есть такая модель:

 public class SignUpModel
{
    [Required, DisplayName(@"Particulars/Salutation")]
    public short Salutation { get; set; }

    public IEnumerable<SalutationOption> SalutationOptions { get; set; }

    [Required, DisplayName("Particulars/FirstName")]
    public string FirstName { get; set; }

    [Required, Display(Name = "Particulars/LastName")]
    public string LastName { get; set; }

    [Required, DataType(DataType.EmailAddress), Display(Name = "Particulars/Email")]
    public string Email { get; set; }

    [Required, DataType(DataType.EmailAddress), Compare("Email"), Display(Name = "Particulars/EmailConfirmation")]
    public string EmailConfirmation { get; set; }
}
 

Теперь, на мой взгляд, я хочу опубликовать ошибки проверки (также на стороне клиента) с помощью @Html.ValidationMessageFor .

 <div class="section-field">
    <div class="form-group">
        @Html.LabelFor(model => model.Email, new { @class = "control-label required" })
        @Html.EditorFor(model => model.Email, new { htmlAttributes = new { autocomplete = "off" } })
        @Html.ValidationMessageFor(x=>x.Email);
    </div>
</div>
<div class="section-field">
    <div class="form-group">
        @Html.LabelFor(model => model.EmailConfirmation, new { @class = "control-label required" })
        @Html.EditorFor(model => model.EmailConfirmation, new { htmlAttributes = new { autocomplete = "off" } })
        @Html.ValidationMessageFor(x=>x.EmailConfirmation);
    </div>
</div>
 

Но в Html.ValidationMessageFor я хочу показывать только такие вещи, как «недопустимый адрес электронной почты» или «оба письма должны совпадать».

Я не хочу показывать сообщение о том, что поля обязательны, поскольку все они обязательны — и они обведены красной каймой.

Возможно ли это как-то? Пытался реализовать пользовательский HtmlHelper, но он ничего не фильтрует на стороне клиента.

Комментарии:

1. Вы пробовали [Required(ErrorMessage = "Your Custom Message")] ?

2. @Izzy да, дело не в этом. Я просто хочу отфильтровать их при проверке, чтобы не показывать их — не изменяя сообщение об ошибке.

Ответ №1:

Итак, я исправил это просто с помощью css.

Я добавляю класс required-validation в недопустимые Required проверки:

 <p class="validation-error required-validation">The field 'FirstName' is required</p>
 

и добавил в мой custom.css

 p.validation-error.required-validation {
  display: none;
}
 

Приветствуются другие идеи о том, как справиться с этим с помощью ASP 🙂