Json数据库字段的反序列化和asp.net mvc



假设我有一个通用的记录表(我首先使用EF代码),并且可以有许多不同类型的详细信息与此表一起使用:

class Record{
int Id,
int TypeOfDetails, // int enum Type1, Type2
string Details, //string with json content
string Attribute 1,
string Atribute 2,
...
}
class DetailsType1{
  string InternalAtribute1,
  ....
}

我决定使用Json将Details对象序列化到数据库字段中。这允许在不更改数据库模式的情况下灵活地处理不同的详细信息。

处理一条记录很容易,我知道Details对象的类型,所以我可以序列化和反序列化。

但是如何有效地检索多个记录并能够在MVC中引用详细信息呢?假设我这样做:

var results = await context.Record.Where(..).ToAsyncList();

我希望能够在我的.cshtml:中做到这一点

@Html.DisplayFor(modelItem => item.Record.Details.InternalAtribute1)

从本质上讲,它将动态地进行反序列化。。

或者,如果AngularJS中可能存在类似的内容,也会有所帮助。

如果我把问题说清楚,请告诉我。

我会回答我的问题。我想得最好的是:

    class Record{
    int Id { get; set; }
    int TypeOfDetails { get; set; } // int enum Type1, Type2
    string JsonDetails { get; set; } //string with json content
    string Attribute1 { get; set; }
    string Atribute2 { get; set; }
    ...
    [NotMapped]
    public JObject Details { get; set; }
    public void PopulateDetails()
    {
        Details = JObject.Parse(JsonDetails);
    }    
}

您仍然需要对所有查询结果执行PopulateDetails,我在foreach循环中执行。然后在CSHTML中,你可以这样做:

@item.Details["InternalAtribute1"])

可以显示内部Json对象的详细信息。

相关内容

  • 没有找到相关文章

最新更新