我正在尝试发送GET请求,参数中包含JSON字符串。 看起来像这样:
var params = { "Url": "http://www.asdf.com", "Users": [{ "Name": "Bob" }, { "Name": "Bill"}] };
通过jQuery的get,在服务器端发送查询字符串是这样的:
URL = HTTP%3A%2F%2fwww.asdf.com与使用者%5b0%5D%5bName%5D =鲍勃与使用者%5B1%5D%5bName%5D =比尔
问题是,模型获取了URL属性,并且它在users数组中看到2个项目,但是,用户名保持为null。
有没有办法解决这个问题?
编辑:
这是模型:
public class Parameters
{
public string Url { get; set; }
public User[] Users { get; set; }
}
public class User
{
public string Name { get; set; }
}
答案 0 :(得分:3)
您可以 POST 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");
}
您的模型绑定将正常工作。