【问题标题】:MVC ModelState and CollectionsMVC 模型状态和集合
【发布时间】:2012-10-11 01:48:58
【问题描述】:

我有一个问题要解决。

我有一个网格(表格)类型布局,其中包含ViewModels 的集合。

我希望能够验证那些ViewModels,然后将给定属性的单元格变为红色(如果它包含错误):

      Prop 1 | Prop 2 | Prop 3 | Prop 4
Row 1   x    |        |   x    |
Row 2   x    |    x   |        |   x
Row 3        |    x   |   x    |

x = 红细胞

我的问题是如何使用从服务层填充的模型状态来做到这一点?

我正在使用 AutoMapper 将域对象 (POCO) 映射到 ViewModel,其中 POCO 由服务层提供。

所以基本上:

Controller --> Service --> Returns Domain Object --> Maps to view models --> 交给view。

业务逻辑在服务层中,我正在考虑将模型状态包装器传递给服务,以使用来自域对象的错误填充模型状态。

我会假设某种密钥?

我知道模型状态是每个财产权的吗?

谢谢!!

【问题讨论】:

  • 您能解释一下“使用从服务层填充的模型状态”是什么意思吗?您使用的是特定语言/库吗?
  • 如果您更具体一点,可能会有所帮助。 “对象”是什么?
  • 你不能在你的 ViewModel IsValid 中添加一个属性,在服务中进行验证并将集合返回到视图中吗?
  • @lukiffer - 如果属性无效,则要求表格的单元格必须为红色。因此,您必须能够跟踪集合中每个视图模型的每个属性。
  • 您使用什么进行验证?内置验证,如动态数据或自定义业务逻辑验证?

标签: c# asp.net-mvc validation modelstate


【解决方案1】:

目前还不清楚您是如何在服务层执行验证的,但归根结底,您的 ModelState 中的以下项目必须有与之相关的错误:

Items[0].Prop1
Items[0].Prop3
Items[1].Prop1
Items[1].Prop2
Items[1].Prop4
Items[2].Prop2
Items[2].Prop3

其中Items 是您的视图模型上的集合属性的名称。因此,您必须使用这些键将这些错误添加到 ModelState。

【讨论】:

    猜你喜欢
    • 2017-04-02
    • 2010-12-07
    • 2010-10-09
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多