我想知道在使用getter和setter时模型验证的最佳实践是什么。具体来说,我的模型中有可空字段,在某些用例中,访问时不应该有空值。在这些情况下,我想从getter中抛出异常,但这是一种公认的做法吗?
如果我在setter中收到一个无效的值,也可能是这种情况。
除了抛出异常之外,我知道可以用来装饰字段的MVC属性,但是它们并没有非常用于模型验证。在“我的getter中的这个值不应该为null”场景中,是否有一个我可以使用的适当属性?
此外,如果接受在getter和setter中抛出异常,是否会抛出一个推荐的异常,即ValueNotValidException(如果这是真的)?
答案 0 :(得分:0)
您应该使用标准Data Validation Attributes来验证模型。如果需要该值 - 请使用[必需]。
if (ModelState.IsValid)
{
...
}
减少代码维护并提高可读性。
答案 1 :(得分:0)
如果要将对象用作ViewModel,可以使用Microsoft Enterprise Library给出的[NotNullValidator]
注释它,以及其他一些提供{{1}等额外功能的对象。验证,范围,Regex
,类型等,如here所示。也可以使用此库创建基于this step-by-step guide的自定义验证器,您可以使用它来注释ViewModel。
否则,您将使用更传统的MVC Data Annotation Attributes,例如IgnoreNulls
。