【问题标题】:Validating PART of the model with ASP.NET MVC & Data Annotations使用 ASP.NET MVC 和数据注释验证模型的一部分
【发布时间】:2010-11-24 13:48:12
【问题描述】:

我们使用数据注释设置了 POCO 类。

对于其中一个类,我们为用户引入了多个视图来填充他们的所有数据。例如,如果它是一个以用户名和密码为属性的类,我们将在第一页让用户指定他们的用户名,并在第二页指定他们的密码。

现在,如果我使用完整的 POCO 类(它要求提供用户名和密码),那么当我们询问 ModelState.IsValid 时,由于尚未提供密码,所以得到 false,但我们知道密码是将在下一页提供!

我们是否有一种通用的方法来验证那些应该为其提供值的模型元素,而不是整个模型?我知道我可以从 ModelState 中删除单个项目的错误。

我知道我们可以将模型元素分离出来,为正在执行的条目的每个页面部分设置单独的模型,但这感觉就像我们正在更改底层类以更好地适应视图。

问候

杰米

【问题讨论】:

    标签: validation asp.net-mvc-2 data-annotations


    【解决方案1】:

    我相信史蒂夫的方法可以解决这个问题

    http://blog.stevensanderson.com/2010/02/19/partial-validation-in-aspnet-mvc-2/

    本质上,他过滤掉了那些没有传入值的键。

    【讨论】:

      【解决方案2】:

      尝试将验证放在 ViewModel 类上。每个视图都有自己的 ViewModel 类。一个是用户名,另一个是密码。在收集到所需的所有数据之前,请勿使用该模型。

      【讨论】:

      • 但我的问题就在于此。我们已经在 POCO 类上指定了所需的验证,然后我们不是通过将它放在其他类上来复制这个活动吗?我很欣赏我们实际上可以将事情分开,但模型通过注释指定什么是必需的,什么不是。
      • 我同意,您不想重复验证规则。我认为 Jamie 提供的链接给出了您正在寻找的答案。
      猜你喜欢
      • 2015-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多