【问题标题】:MVC Model Validation Across Multiple Pages跨多个页面的 MVC 模型验证
【发布时间】:2011-06-20 21:42:37
【问题描述】:

对于当前的 MVC3 项目,我有一个具有多个输入页面的模型。该对象设置了必填字段,但它们位于不同的页面上。这意味着我无法对 ModelState.IsValid 进行简单检查。相反,在允许用户进入下一个页面之前,我会检查当前页面是否具有所需的所有值。这似乎不太理想。

我不喜欢的主要事情之一是,在第一个页面以外的页面上有必填字段意味着回发和整体验证失败已经发生,因此下一页上的任何必填字段都已标记为即使用户从未访问过该页面,也会出现错误状态。

是否存在验证具有多个输入页面且其上有必填字段的实体的最佳实践?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 validation


    【解决方案1】:

    您应该使用视图模型而不是域模型。因此,您可以为向导的每个步骤将域模型拆分为多个视图模型。这是another answer,您可能会觉得有用。

    【讨论】:

    • +1。我认为,视图模型不仅在 MVC 中,而且在与 DDD 相关的范式中,通常都是不太被理解的结构之一。很多人试图强迫他们的实体同时扮演这两个角色,这往往比非实体方法更令人头疼。
    • 你太棒了,感谢您的回复,我会检查视图模型。确实似乎是我正在寻找的答案。
    • 好的,接下来的问题。我有一个创建帖子操作。这是否意味着我需要为每个 ViewModel 创建一个操作?
    【解决方案2】:

    这是推荐为每个页面使用单独的 ViewModel 作为最佳实践的原因之一,并且不鼓励直接在 ViewModel 中使用实体类。

    使用单独的 ViewModel,您可以根据需要定制基于属性的验证。这会使事情复杂化,因为您需要找到一种在 ViewModel 和您的实体之间进行映射的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-02
      • 1970-01-01
      • 1970-01-01
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-26
      相关资源
      最近更新 更多