好吧,所以我使用的是MVC 3,它非常适合将JSON数据集反序列化为传递给我的控制器操作的强类型对象。不幸的是,我还没有找到一个更具动态的解决方案。如何在MVC 3控制器中获取动态创建的Json数据集?
是否内置Json反序列化和类支持“未定义”属性集?例如,假设我有一些固定的数据,如姓名和年龄,但我也想传递一个动态创建的评级列表,用户可以在其中输入(或选择)电影并在表中设置评分值。
模型数据结构可以是这样的:
public class UserRatings
{
public string Name { get; set; }
public int Age { get; set; }
public Dictionary<string,int> Ratings { get; set; }
}
但是假设我的Json数据集看起来像这样的javascript:
var data = { Name: name, Age: age, Ratings: rating };
凡等级变量是一个动态构造对象由电影的名称(或编号)作为关键字和评级编号组成。在控制器动作中自然地反序列化它将不会成功,因为它不理解评级到相当复杂的字典对象的映射。但是有没有一个通用的Json集合,我可以用它作为中间格式的评分?
我已经尝试使用JavaScript对象作为JSON字符串,只是发送一个字符串,但我无法找到一个“工厂”或可以使C#中的JSON结构的东西,我可以迭代得到数据输出。看起来在这方面Json
和JsonResult
并不帮助我。基本上我怎么能在MVC中使用内置的Json支持来对自己的通用Json集合对象进行反序列化?
只是想评论一下,我的解决方案到目前为止是使评级为字符串类型,并在客户端上对评级对象执行JSON.stringify并将其作为一个字符串属性发送。然后它们全部直接映射到POCO中。然后剥离评级字符串中的所有转义字符,该字符串以json字符串留给我,以便JavaScriptSerialiser能够转换为Dictionary,我可以在其中遍历它们并更新数据库。它有点混乱,但它有效。任何建议,不胜感激。 –
Johncl
2011-03-30 12:31:24
相关/愚弄: http://stackoverflow.com/questions/5022958/passing-dynamic-json-object-to-c-sharp-mvc-controller http:// stackoverflow。com/questions/10787679/passing-unstructured-json-between-jquery-and-mvc-controller-actions – 2013-01-07 10:14:05