1

伙计们,我有建筑问题:

我有几个外观非常相似的项目的视图模型,具有不同的数据注释:

public class VM1 {
  [Display(Name="VM1 Field1")]
  public string Field1 { get; set; }
  [Display(Name="VM1 Field2")]
  public string Field2 { get; set; }
}
public class VM2 {
  [Display(Name="VM2 Field1")]
  public string Field1 { get; set; }
  [Display(Name="VM2 Field2")]
  public string Field2 { get; set; }
}
public class VM3 {
  [Display(Name="VM3 Field1")]
  public string Field1 { get; set; }
  [Display(Name="VM3 Field2")]
  public string Field2 { get; set; }
}

有没有办法让我定义一个抽象类VMBase,以便 VM1/2/3 继承以及在这种情况下如何分配数据注释?基本上按类来说,它是典型的多态情况,但是数据注释——在这种情况下不知道如何处理?

此外,视图需要如何显示才能显示正确的类?还是为了数据注释的缘故,我必须将整个事物乘以 3 倍(可能列表会增长)?

如果您认为通过流畅的验证可以更轻松地完成 - 请提供示例(视图模型、控制器、视图)

编辑 但我试图坚持使用数据注释:那些用于视图模型,而流利的验证更多地用于域实体。我需要来自开箱即用的数据注释的客户端验证,而不是来自流利的验证。

先感谢您。

4

1 回答 1

1

我有同样的问题。但是,我想我可能在FluentValidation中找到了解决方案。它就像 EF 的 Fluent API,如果你曾经使用过它,但它涵盖了 Fluent API 没有的验证方面,而不必求助于数据注释,正如你所提到的,如果验证,则无法组合类对于特定属性在继承链中的某处会有所不同。

于 2013-02-27T19:41:51.333 回答