在getter和setter中抛出异常

时间:2013-01-18 01:08:24

标签: asp.net-mvc asp.net-mvc-3 nullable getter-setter model-validation

我想知道在使用getter和setter时模型验证的最佳实践是什么。具体来说,我的模型中有可空字段,在某些用例中,访问时不应该有空值。在这些情况下,我想从getter中抛出异常,但这是一种公认​​的做法吗?

如果我在setter中收到一个无效的值,也可能是这种情况。

除了抛出异常之外,我知道可以用来装饰字段的MVC属性,但是它们并没有非常用于模型验证。在“我的getter中的这个值不应该为null”场景中,是否有一个我可以使用的适当属性?

此外,如果接受在getter和setter中抛出异常,是否会抛出一个推荐的异常,即ValueNotValidException(如果这是真的)?

2 个答案:

答案 0 :(得分:0)

您应该使用标准Data Validation Attributes来验证模型。如果需要该值 - 请使用[必需]。

http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-validation-to-the-model

if (ModelState.IsValid)
{
   ...
}

减少代码维护并提高可读性。

答案 1 :(得分:0)

如果要将对象用作ViewModel,可以使用Microsoft Enterprise Library给出的[NotNullValidator]注释它,以及其他一些提供{{1}等额外功能的对象。验证,范围,Regex,类型等,如here所示。也可以使用此库创建基于this step-by-step guide的自定义验证器,您可以使用它来注释ViewModel。

否则,您将使用更传统的MVC Data Annotation Attributes,例如IgnoreNulls