asp.net mvc覆盖强类型视图中的数据注释

时间:2013-03-13 17:20:06

标签: 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 = "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 个答案:

答案 0 :(得分: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");
    });
});