如何在一个视图上处理模型的多个实例

时间:2011-10-11 05:26:07

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

我有一个名为DeviceType的模型类,它是这样的:

public class DeviceType
{
    int ID { get; set; }
    String Type { get; set; }
    String Description { get; set; } 
    EntityCollection<AttributeDefinition> AttributeDefinitions { get; set; }
}

AttributeDefinition定义如下:

public class AttributeDefinition
{
    int ID { get; set; }
    String Name { get; set; }
    bool IsPrivate { get; set; }
    bool IsInherited { get; set; }
}

我正在尝试创建一个视图来编辑DeviceType的详细信息。在该视图中,我想要一个包含每个AttributeDefinition的表作为可编辑行,以便您可以更新同一页面上的每个AttributeDefinition。

我尝试关注this post,但是我收到了这个错误:

  

EntityCollection已初始化。该   应仅调用InitializeRelatedCollection方法进行初始化   在对象图的反序列化期间新的EntityCollection。

有没有办法在不诉诸AutoMapper之类的情况下做到这一点?也许使用FormCollection或使用ViewModel?

2 个答案:

答案 0 :(得分:0)

通常不要在视图模型中使用命名空间System.Data的类。使用List或其他集合类更改视图模型。当您从数据库中读取数据并检索EntityCollection时,您需要在POCO ojbect中转换您的实体并将此新结构用作视图模型。

答案 1 :(得分:0)

我建议你只为你的视图创建一个单一的实体/模型。我不确定DeviceType和AttributeDefinition是如何相关的,但你的模型看起来像这样:

public class DeviceTypeEditModel
{
    int ID { get; set; }
    String Type { get; set; }
    String Description { get; set; } 
    EntityCollection<AttributeDefinition> AttributeDefinitions { get; set; }
    AttributeDefinition AttributeDefinition { get; set;}
}