2013-03-13 4 views
0

У меня есть объект с клиентамиASP.NET MVC переопределения DataAnnotations в сильно типизированной

[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 работали. и это происходит соответственно. Но в моем «поиске» мне не нужны поля. остальная часть аннотации данных может оставаться.

Возможно ли это?

ответ

0

Хорошо. вот как я справился с этим в моем случае. вместо создания нового ViewModel я добавил класс ко всем моим формам как 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"); 
    }); 
});