2
我使用MVC web Api進行RESTful目的。我的控制器方法以字符串格式返回序列化的Json對象。我有一些像這樣的簡單的方法:由MVC Web API返回的JsonValue在客戶端是空的
public string Put(Folder folder)
{
var folder1 = new Folder{Id="1", IsShared=true,Name= folder.Name};
var jsSerializer = new JavaScriptSerializer();
return jsSerializer.Serialize(folder1);
}
我打電話GET,PUT,DELETE和郵政QUnit的測試方法是這樣,它工作正常:
ajax: {
getData: function (url, data) {
return processRequest(url, data, "GET");
},
postData: function (url, data) {
return processRequest(url, JSON.stringify(data),"POST");
},
updateData: function (url, data) {
return processRequest(url, JSON.stringify(data),"UPDATE");
},
deleteData: function (url, data) {
return processRequest(url, JSON.stringify(data),"DELETE");
},
processRequest: function (url, data, type) {
return $.ajax({
type: type,
dataType: "json",
contentType: "application/json;charset=utf-8",
url: url,
data: data,
processData: true
});
}
},
我需要改變返回值從字符串到實際的Json對象,因爲我的客戶端不希望序列化的Json了。他們需要實際的Json對象。所以我將方法返回類型更改爲JsonValue,並使用JsonValue.Parse()方法解析序列化的Json對象。當我在服務器端跟蹤我的代碼時,JsonValue對象在其屬性中具有適當的值並且看起來很好,但客戶端中返回的JsonValue具有空屬性。這裏改變方法:
public JsonValue Put(Folder folder)
{
var folder1 = new Folder{Id="1", IsShared=true,Name= folder.Name};
var jsSerializer = new JavaScriptSerializer();
return JsonValue.Parse(jsSerializer.Serialize(folder1));
}
這裏是測試結果:
Expected:
{
"Id": "1",
"IsShared": true,
"Name": "abc"
}
Actual:
{
"Id": [],
"IsShared": [],
"Name": []
}
我明白任何想法。
做你的VAR文件夾1 =文件夾{ID =忘記「新」」 1「,IsShared = true,Name = folder.Name}; ?像var folder1 =新文件夾{Id =「1」,IsShared = true,Name = folder.Name}; – 2012-07-31 02:04:40
我編輯我的帖子。 – 2012-07-31 02:17:14