1

我正在尝试发送一个 GET 请求,参数中包含 JSON 字符串。看起来像这样:

var params = { "Url": "http://www.asdf.com", "Users": [{ "Name": "Bob" }, { "Name": "Bill"}] };

通过 jQuery 的 get 发送,服务器端的查询字符串是这样的:

Url=http%3a%2f%2fwww.asdf.com&Users%5b0%5d%5bName%5d=Bob&Users%5b1%5d%5bName%5d=比尔

问题是,模型填充了 URL 属性,并且在 users 数组中看到了 2 个项目,但是,用户名保持为空。

有没有办法来解决这个问题 ?

编辑:

这是模型:

public class Parameters
    {
        public string Url { get; set; }
        public User[] Users { get; set; }
    }

    public class User
    {
        public string Name { get; set; }
    }
4

1 回答 1

3

您可以将JSON数据发布到您的 Action 方法,它会正常工作。MVC3 将为 JSON 输入做模型绑定。

确保在进行 ajax 调用时提供contentType属性值。

var params = JSON.stringify(  { "Url": "http://www.asdf.com", 
                                "Users": [{ "Name": "Bob" }, 
                                          { "Name": "Bill"}] });
$.ajax({
    url: '@Url.Action("AcceptJson","Home")',
    type: 'POST',
    contentType: 'application/json; charset=utf-8',   
    data: params, 
    success: function (r) {

    }
});

假设您有这样的操作方法

[HttpPost]
public ActionResult AcceptJson(Parameters model)
{
    if (model != null)
    {
        //check properties of model
    }        
    return Content("ha ha! Json works! Do something useful");
}

您的模型绑定将正常工作。 在此处输入图像描述

于 2012-10-04T02:53:52.440 回答