2013-08-28 79 views
0

我有我的控制器,它可以發送一個json對象並再次接收同一個對象。 我的問題是,AjaxSaveFoo創建一個Foo對象,但我總是得到一個空的對象。我如何創建反序列化使用Newtonsoft.Json進行反序列化

/// <summary> 
/// Returns a foo 
/// </summary> 
/// <returns></returns> 
public JsonNetResult AjaxLoadFoo() 
{ 
    return new JsonNetResult 
    { 
     Data = new Foo() 
    }; 
} 

/// <summary> 
/// Saves a foo 
/// </summary> 
/// <returns></returns> 
public JsonNetResult AjaxSaveFoo(Foo foo) //who tries to deserialize this!!, its always empty 
{ 

    return new JsonNetResult 
    { 
     Data = foo 
    }; 

} 

我的客戶端..

$.ajax({ 
    type: "POST", 
    url: "AjaxSaveFoo", 
    data: JSON.stringify(this._FooObj), 
    success: this.saveSucces, 
    dataType: "json", 
    contentType: "application/json; charset=utf-8", 
    error: this.saveFailure 
}); 

富時公司派下來..
{

"CustomerNumber": 2, 
"CustomerStatus": "1" 
} 

富時其提交(POST)

{"CustomerNumber":2,"CustomerStatus":"1"} 
+3

向我們展示JS和C#中的Foo對象。他們的定義似乎不匹配。 – Pradeep

+0

我發現了錯誤.... 該網址應該是AjaxSaveFoo /而不是AjaxSaveFoo。這給了我一個301從服務器(添加/)但也導致客戶端使用GET,因此不填充數據.. *嘆* – Middy

回答

0

我發現的bug ....

URL應該已經AjaxSaveFoo /而不是AjaxSaveFoo。這給了我一個301從服務器(添加/)但也導致客戶端使用GET,因此不填充數據.. 嘆息

2

ob正在傳遞的項目沒有正確轉換爲Foo對象。

嘗試更改簽名輸入一個字符串,然後嘗試和反序列化:

public JsonNetResult AjaxSaveFoo(string json) 
{ 
    var foo = JsonConvert.DeserializeObject<Foo>(json); 
    return new JsonNetResult 
    { 
     Data = foo 
    }; 
} 
相關問題