0

json オブジェクトを送信し、同じオブジェクトを再度受信できるコントローラーがあります。私の問題は、AjaxSaveFoo が Foo オブジェクトを作成することですが、常に空のオブジェクトが返されることです。デシリアライゼーションを作成するにはどうすればよいですか?

/// <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
});

送信されたときの Foo..
{

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

送信時の Foo (POST)

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

2 に答える 2

2

Fooあなたが渡しているオブジェクトは、オブジェクトに正しく変換されていません。

署名を変更して文字列を入力してから、逆シリアル化を試してください。

public JsonNetResult AjaxSaveFoo(string json)
{
   var foo = JsonConvert.DeserializeObject<Foo>(json);
   return new JsonNetResult
   {
      Data = foo
   };
} 
于 2013-08-28T10:30:42.650 に答える
0

I found the bug....

The url should have been AjaxSaveFoo/ instead of AjaxSaveFoo. This gave me a 301 from the server (adding the /) But also resulted in the client using a GET and therefore not populating data..sigh

于 2013-08-29T10:05:14.723 に答える