我不清楚有多个视图模型来自单一模型的最佳方法。
该模型目前具有数据注释,但我们喜欢视图模型作为抽象层的灵活性,并且还提供根据视图需求使用具有不同注释的模型属性的灵活性。
我已经看到使用MetadataType属性声明基本模型以指向具有数据注释的视图模型,但是当我们需要1:M(1个模型:M视图模型)时,这会强制建立1:1的关系。
我们目前不使用映射器并将映射器放在一边,这是手动完成包含代表单个模型的数据注释的视图模型的最佳方法。也许让viewmodel派生自模型类,删除模型数据注释,然后在视图模型中创建镜像模型的属性(但不能与隐藏模型属性的名称相同?)并查看视图视图模型属性上的数据注释,例如......
[DisplayName("Version Number")]
[StringLength(30)]
public double VMVersionNumber
{
get {
return VersionNumber; // VersionNumber is model property
}
set {
value = VersionNumber;
}
}
由于
答案 0 :(得分:1)
组合不会比继承更好吗?
public class ModelUser
{
[StringLength(30)]
public string FirstName { get; set; }
[StringLength(30)]
public string LastName { get; set; }
}
public class ViewModelForSomeView
{
public ModelUser MyUser { get; set; }
public string OtherPropertyNecessaryForThisView { get; set; }
public string AnotherPropertyNecessaryForThisView { get; set; }
}