我已经阅读了很多关于如何将 JavaScript 对象发送到 asp.net MVC Controller 的博客和 stackoverflow 答案。但是到目前为止我看到的所有示例都要求您知道 JavaScript 对象将具有哪些属性(因为它们都将 JavaScript 对象转换为 C# 对象)。
当我在 asp.net webforms 中使用 PageMethods 时,我可以发送任何复杂的 JavaScript 对象或数组(甚至是分层数据),并且它会被转换成一个我可以迭代的字典。我有机会在 asp.net MVC 中做类似的事情吗?
最佳答案
我现在找到了一种适合我的方法。
- 我正在将我的数据转换为 json,并在我的 ASP.net MVC Controller 中将其作为字符串接收。
- 然后我使用 json.net库来读取数据 - 因为这个库允许我读取数据而无需将其转换为 C#(或 VB)对象。
JavaScript 代码:
//first include the json2 library for older browsers and jQuery
$.post(url, {json: JSON.stringify(mydata)});
服务器端代码:
public void xyz(string json)
{
JObject j = JObject.Parse(json);
string name = (string)j.SelectToken("Products[0].Name");
//...
}
好处:它是“普通”json,这意味着它不是一些不常见的格式或接口(interface)类型。
编辑:我发现如果我使用的是 .net 4,我什至不需要 C# json-library - 因为我可以借助JavaScriptSerializer:
JavaScriptSerializer jss = new JavaScriptSerializer();
Dictionary<string, object> data = (Dictionary<string, object>) jss.Deserialize<dynamic>(json_string);
关于javascript - 将具有未知属性的 JavaScript 对象发送到 asp.net MVC Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7121439/