1

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

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

除了抛出异常之外,我还知道 MVC 属性可用于装饰字段,但并未将它们用于模型验证。在“此值在我的 getter 中不应为空”场景中,是否有我可以使用的适当属性?

此外,如果接受在 getter 和 setter 中抛出异常,是否有推荐的抛出异常,即 ValueNotValidException (如果那是真实的)?

4

2 回答 2

0

您应该使用标准数据验证属性来验证模型。如果该值是必需的 - 使用 [Required]。

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

if (ModelState.IsValid)
{
   ...
}

更少的代码维护和更高的可读性。

于 2013-01-18T01:22:02.563 回答
0

如果您打算将该对象用作 ViewModel,您可以使用[NotNullValidator]Microsoft 的Enterprise Library以及其他提供额外功能(如Regex验证、范围、类型等)的给定注释它,如此IgnoreNulls所示。也可以使用此库创建自定义验证器,基于此分步指南,您可以使用它来注释您的 ViewModel。

否则,您将使用更传统的MVC 数据注释属性,例如[Required].

于 2013-01-18T01:27:26.067 回答