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

我发现了这个错误......

url 应该是 AjaxSaveFoo/ 而不是 AjaxSaveFoo。这给了我来自服务器的 301(添加 /)但也导致客户端使用 GET 并因此不填充数据..叹息

于 2013-08-29T10:05:14.723 回答