【问题标题】:Validation of a List of an Annotated Model注释模型列表的验证
【发布时间】:2012-04-05 14:10:26
【问题描述】:

我不确定标题是否清楚。让我更好地解释一下:

我有两个模型:

1- GuestResponse.cs:

public class GuestResponse
    {
        [Required(ErrorMessage="Please enter your name")]
        public string Name { get; set; }

        [Required(ErrorMessage = "Please enter your email address")]
        [RegularExpression(".+\\@.+\\..+", ErrorMessage="Please enter a valid email address")]
        public string Email { get; set; }

        [Required(ErrorMessage = "Please enter your phone number")]
        public string Phone { get; set; }

        [Required(ErrorMessage = "Please especify wheter you will attend")]
        public bool? WillAttend { get; set; }
    }

2- CompanyGuestResponse.cs:

public class CompanyGuestResponse
    {
        [Required(ErrorMessage = "Please enter your company name")]
        public string Name { get; set; }

        [Required(ErrorMessage = "Please enter your company email address")]
        [RegularExpression(".+\\@.+\\..+", ErrorMessage = "Please enter a valid email address")]
        public string Email { get; set; }

        [Required(ErrorMessage = "Please enter your company phone number")]
        public string Phone { get; set; }

        public IList<GuestResponse> GuestResponses { get; set;} 
    }

我还有一个用于 CompanyGuestResponse 模型的强类型视图,其中有一个带有表格的表单,可以让用户为属性 GuestResponses 提供输入。

我希望只有在正确验证表格的填充行(即不要尝试验证未填充的行)并且至少有一行正确填充的情况下才能提交表单。

我尝试按照ViewModel validation for a List 中的说明创建自定义注释,但没有成功(mvc 只是忽略了列表注释并验证了 GuestResponse 类中的注释):

[EnsureOneElementAttribute(ErrorMessage = "At least a person is required")]
public IList<GuestResponse> GuestResponses { get; set;} 

结果:

http://postimage.org/image/b2jn7ta69/

【问题讨论】:

    标签: c# asp.net-mvc validation


    【解决方案1】:

    我知道您想要验证模型本身,而不是每个字段,所以您可以做些什么来删除属性上的[Required] 属性,并在操作中验证是否填充了任何字段,如果是这样的话继续,添加一个错误并且不要将它与任何字段相关联

    所以我要告诉你的是在这种情况下删除注释并进行手动检查

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-16
      • 2015-06-02
      • 1970-01-01
      • 1970-01-01
      • 2016-03-06
      • 1970-01-01
      相关资源
      最近更新 更多