如何在Ajax调用中返回JsonResult中的MVC模式?

时间:2014-01-02 20:20:14

标签: jquery ajax asp.net-mvc asp.net-mvc-4

如何在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");

            }
        });

1 个答案:

答案 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对象中。所以你可能不会需要来返回它(除非你从这个例子中删除了更多内容)。