我有以下ViewModel:
public class InvitationViewModel
{
public int id { get; set; }
public string InvitationName { get; set; }
public string Type { get; set; }
public string RSVPStat { get; set; }
public virtual List<Guests> guests { get; set; }
}
我想为访客列表添加一些验证,是否可以使用数据注释或是否有其他方式?
感谢您的任何建议。
答案 0 :(得分:1)
由于你的问题有点不清楚,我会围绕基地。您可以向列表本身添加一些验证,如果这是您正在寻找的。这几乎只包括Required
,它将验证列表至少有一个项目:
[Required]
public List<Guests> Guests { get; set; }
关键字virtual
允许子类重写属性,方法或字段。最有可能的是,您在实体上看到了这一点,并认为您在视图模型中需要相同的内容。实体在引用和导航属性上使用virtual
的原因是实体框架为您的实体创建代理类以提供延迟加载功能。代理(只是子类)会覆盖引用和导航属性,以插入必要的延迟加载代码。
如果您正在讨论将验证属性添加到实际Guest
类的属性中,则不能仅仅为了视图模型而这样做。您添加到Guest
的任何验证都将用于Guest
的任何使用。但是,没有什么可以阻止你实现GuestViewModel
或类似的类,然后你可以添加你喜欢的任何验证。
答案 1 :(得分:1)
您想验证每位客人吗?在这种情况下,标记Guest with Data annotations。如果您想要对列表本身进行验证(即访客数量),您可以编写自己的ValidationAttribute,或者可以在模型上实现IValidateableObject。
编辑:如果您的视图模型需要不同的验证,请创建一个GuestViewModel并使用所需的验证对其进行标记。