C# 4.0 asp.net mvc在强类型视图中重写数据批注

C# 4.0 asp.net mvc在强类型视图中重写数据批注,c#-4.0,required-field,data-annotations,C# 4.0,Required Field,Data Annotations,我有一个客户对象 [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="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; }
我在“添加”视图和“搜索”视图中使用此对象

视图:

  • @LabelFor(x=>x.FirstName) @TextBoxFor(x=>x.FirstName,new{required=false})
  • @LabelFor(x=>x.LastName) @TextBoxFor(x=>x.LastName,new{required=false})
  • 在添加视图中,我希望所有dataannotations属性都正常工作。它也在这样做。 但在我的“搜索”视图中,我不希望字段是必需的。其余的数据注释可以保留


    这可能吗?

    嗯。我就是这样处理的。我没有创建新的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");
        });
    });
    
    //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");
        });
    });