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");
});
});