我在javascript中有一个这样的模型:
function SomeModel()
{
this.Id = ko.observable();
this.Name = ko.observable();
this.MetaData = {};
}
然后我需要将它发送到 MVC,以便我可以将它保存在 mongodb 中,但是我不知道如何最好地将 MetaData 存储在 C# 表示中......因为模型看起来像:
public class SomeModel
{
public Guid Id {get;set;}
public string Name {get;set;}
public object MetaData {get;set;}
}
但是它不喜欢将 json 对象绑定到对象,我不确定我是否应该使用 ExpandoObject 或其他东西,因为我对访问 c# mvc 服务中的数据并不那么大惊小怪,它仅适用于插件前端可以将自己的数据存储在对象上以供以后使用。所以一个例子可能是:
var someModel = new SomeModel();
someModel.MetaData.Bookmarks = [];
someModel.MetaData.Bookmarks.push({ location: 120, document: 23003032 });
所以它可以包含任何东西和子对象,就像我说的,我只需要把它塞进一个对象中,就像 Mongo 的传输机制一样,这将把它保存为它的无模式。
目前,来自 JS 的模型通过 Jquery 通过 ajax 发送,并在控制器中自动绑定,然后发送到存储库。
== 编辑 ==
我用 MVC4 做了一些小测试,我可以在我的模型中放置一个 expando 对象并填充它,但是它似乎只存储 1 层数据,所以如果我要回发:
...,
MetaData: {
something: {
one: 1,
two: 2
}
},
...
我最终会得到我的元数据字段的expando对象,知道该something
字段,但不会存储第一次遍历下面的任何数据,所以除了将其转换为json字符串之外,还有什么方法可以存储上面的数据存储?