【发布时间】:2011-05-25 13:58:18
【问题描述】:
我无法从我的 javascript/jQuery 请求接收 json 值到我的控制器。
MyClass 如下所示:
function MyClass() {
this.MyString = null;
this.MyInt = null;
this.Subs = null;
}
我的请求如下所示:
var testData1 = new MyClass();
testData1.MyInt = 1234;
testData1.MyString = "abcDEF";
testData1.Subs = new Array();
var testData2 = new MyClass();
testData2.MyInt = 5678;
testData2.MyString = "GHIjkl";
testData1.Subs.push(testData2);
var jsonData = JSON.stringify(testData1);
var self = this;
$.ajax({
url: '/Home/Request',
type: 'POST',
dataType: 'json',
data: jsonData,
contentType: 'application/json; charset=utf-8',
success: function (x) {
self.ParseResult(x);
}
});
现在我有了一个控制器:
public JsonResult Request(MyClass myObj)
{
var answer = ...
return Json(answer, JsonRequestBehavior.DenyGet);
}
使用以下类:
public class MyClass
{
public string MyString { get; set; }
public int MyInt { get; set; }
public List<MyClass> Subs { get; set; }
}
jsonData 中的所有名称都与我的类“MyClass”中的名称完全相同。但是 myObj 中没有值。
问题出在哪里。我可以做些什么来让这个映射正常工作吗?
非常感谢您,
克里斯
更新:
感谢您的回复。我使用了 JavascriptSerializer。但我有问题,myString 为空:
public JsonResult Data(string myString)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
var data = serializer.Deserialize<MyClass>(myString);
var answer = ...
return Json(answer, JsonRequestBehavior.DenyGet);
}
价值在哪里?我应该从请求数据中获取值吗?
@戴夫·沃德
您的第二个解决方案正在工作。但我的潜艇有问题。
var testData1 = new MyClass();
testData1.MyInt = 1234;
testData1.MyString = "abcDEF";
testData1.Subs = new Array();
for (var i = 0; i < 10; i++) {
var testData2 = new MyClass();
testData2.MyInt = i;
testData2.MyString = "abcDEF";
testData1.Subs.push(testData2);
}
我的控制器中有 10 个 Subs,但都是空的。我能做什么?
@戴夫·沃德,@ALL
使用传统设置,我的 10 个 Subs 是空的,它们不存在。订阅数为 0(非 NULL)。 我试图将 Subs Type 从 List 更改为 IEnumerable 但这没有帮助。 你知道我还能做些什么来让 Subs 填充到我的控制器中吗?
好的,谢谢 Dave Ward,我将使用 JSON 方法。
对于遇到相同问题的其他人,此控制器代码可能来自帮助:
MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(myString));
var serializer = new DataContractJsonSerializer(typeof(MyClass));
MyClass se = serializer.ReadObject(ms) as MyClass;
ms.Close();
【问题讨论】:
标签: jquery asp.net-mvc json asp.net-mvc-2