如何在MVC 3操作中接收JSON作为模型(包含字典)?
浏览器端:将JSON发布到MVC3操作:
UpdateData :
{
Id: 88991,
Changes:
{
X:5,
Y:6
}
}
服务器端:
public class UpdateDataModel
{
public int Id {get;set;}
public IDictionary<string, string> Changes {get;set;}
}
public ActionResult SaveUpdateData(UpdateDataModel updateData)
{
// updateData.Id should be 88991
// updateData.Changes should be a dictionary containing X:5, Y:6
}
答案 0 :(得分:2)
我认为应该是这样的:
UpdateData :
{
Id: 88991,
Changes:
[
{ Key: 'X', Value: 5 },
{ Key: 'Y', Value: 6 }
]
}
答案 1 :(得分:1)
我通常通过使用jQuery与jSON库结合使用jjax回发到服务器来实现此目的。
发回服务器的json需要正确匹配服务器端模型中的属性,以便MVC中的默认模型绑定器可以找出将其映射到的内容。 你的控制器动作/路线会很好,这就是客户端的样子:
function Save()
{
var data = {
updateData: {
Id: 85,
Changes: [
{ Key: 'A', Value: 'B' },
{ Key: 'C', Value: 'D' },
]
}
};
$.ajax({
type: 'POST',
url: '/someController/SaveUpdateData',
contentType: 'application/json',
dataType: 'json',
data: JSON.stringify(data),
success: function(response) {
//do stuff here after finishing server side
}
});
}