asp.net mvc переопределяет аннотации данных в строго типизированном представлении

У меня есть объект клиента

 [StringLength(50)]
        [Display(Name="First Name")]
        [Required(ErrorMessage = "Required")]
        [RegularExpression("([a-zA-Z]+)", ErrorMessage = "only alphabets allowed")]
        public new string FirstName { get; set; }

        [StringLength(50)]        
        [Display(Name = "Last Name")]
        [Required(ErrorMessage = "Required")]
        [RegularExpression("([a-zA-Z]+)", ErrorMessage = "only alphabets allowed")]
        public new string LastName { get; set; }

Я использую этот объект в представлениях "Добавить" и "Поиск"

Посмотреть:

 <li>
                     @Html.LabelFor(x=>x.FirstName)
                        @Html.TextBoxFor(x => x.FirstName, new { required=false })
                    </li>

                    <li>
                          @Html.LabelFor(x=>x.LastName)
                        @Html.TextBoxFor(x => x.LastName, new { required=false })
                    </li>

В представлении добавления я хочу, чтобы все свойства dataannotations работали. и это делает соответственно. Но в моем "поисковом" представлении я не хочу, чтобы поля были обязательными. Остальные данные аннотации могут остаться.

Это возможно?

1 ответ

Решение

Что ж. Вот как я справился с этим в моем случае. вместо создания новой модели представления я добавил класс для всех моих форм, как SearchForm и с помощью JavaScript я удалил все необходимые атрибуты для него.

//Clear Form Required stuff for search
$(function () {
    $(".SearchForm").find("input:text").each(function () {
        $(this).removeAttr("data-val-required");
    });
    $(".SearchForm").find("select").each(function () {
        $(this).removeAttr("data-val-required");
    });
});
Другие вопросы по тегам