![](/img/trans.png)
[英]MVC 4 Passing View Model to controller - Using JavaScriptSerializer to Deserialize complex JSON Object
[英]Passing model with dynamic json object to MVC controller
我在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
}
},
...
我将以Metadata字段的expando对象最终了解something
字段,但不会在第一次遍历以下存储任何数据,因此除了将其转换为json字符串之外,有什么方法可以存储上面的数据被存储?
由于似乎没有确凿的答案,我只需要在jquery ajax中执行一个额外的步骤即可将所有“元数据”字段转换为json字符串,然后将其作为字符串存储在服务器上。
然后,如果需要访问或更改数据,可以使用Web助手Json.Encode/Decode
返回动态信息,然后可以添加子元素,其操作如下:
然后,我再次对其进行编码,将动态对象转换为对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.