如何在Ajax调用中返回JsonResult中的MVC模型?在下面的示例中,我可以使用contact
返回result
对象,并在ajax成功回调中捕获它。
C#
[HttpPost]
public JsonResult Index(Contact contact)
{
if (ModelState.IsValid)
{
//send contact object with result
var result = new { Success = "true", Message = "No Error" };
return Json(result, JsonRequestBehavior.DenyGet);
}
else
{
var result = new { Success = "false", Message = "Invalid state" };
return Json(result, JsonRequestBehavior.DenyGet);
}
}
的JavaScript
$.ajax({
url: this.action,
type: 'POST',
data: formData,
mimeType: "multipart/form-data",
contentType: false,
cache: false,
processData: false,
success: function (result) {
var obj = jQuery.parseJSON(result);
//need to access contact data here.
updateSuccess(obj);
},
error: function(jqXHR, textStatus, errorThrown) {
//alert("Fail");
}
});
答案 0 :(得分:0)
如果您需要返回Contact
对象,请将其返回。像这样:
return Json(contact, JsonRequestBehavior.DenyGet);
然后在你的JavaScript中:
success: function (result) {
var obj = jQuery.parseJSON(result);
// obj is an instance of Contact, at least in terms of the DTO data expressed in JSON
}
如果您需要返回两者,则只需将其添加为匿名类型的一部分:
var result = new { Success = "true", Message = "No Error", Contact = contact };
return Json(result, JsonRequestBehavior.DenyGet);
然后在你的JavaScript中:
success: function (result) {
var obj = jQuery.parseJSON(result);
// obj.Contact is an instance of Contact, at least in terms of the DTO data expressed in JSON
updateSuccess(obj);
}
当然,值得注意的是,除非您的服务器端代码以某种方式修改Contact
,否则您只需返回客户端代码在第一名。这意味着它在某种程度上已经可用于客户端,基本上在formData
对象中。所以你可能不会需要来返回它(除非你从这个例子中删除了更多内容)。