如何在ASP.NET MVC 4中从控制器返回JSON对象

本文关键字:控制器 返回 JSON 对象 ASP NET MVC | 更新日期: 2023-09-27 17:59:44

当我console log我的response时,我得到的只是HTML。如何获取player object

Site.JS:

$(".AddToPreRank").click(function (e) {
    e.preventDefault();
    //grab id
    var id = $(this).get(0).id;
    //append player to prerank list
    $.ajax({
        url: '@Url.Action("AddToPreRank")',
        type: 'POST',
        data: { id : id },
        success: function (response) {
            console.log(response);
            alert("hello");
        }
    });
});

LeagueController.cs:

[HttpPost]
public ActionResult AddToPreRank(int id){
    Player player= new Player();
    player = db.Players.Find(id);
    return Json(player);
}

如何在ASP.NET MVC 4中从控制器返回JSON对象

您正在调用一个ActionResult方法,它将返回比您想要的JSON多得多的内容。

将代码更改为

public JsonResult AddToPreRank(int id){
        Player player= new Player();
        player = db.Players.Find(id);
        return Json(player);
    } 

您可能还需要确认在JavaScript文件中提取的URL是正确的。参数传递不正确,或者Razor无法正确识别@sescape字符。

尝试使用$.post将返回默认为JSON。

$.post('@Url.Action("AddToPreRank")', data: { id : id },
    function (response) {
        console.log(response);
        alert("hello");
    }
});

此外,返回JsonResult而不是ActionResult,并将player作为匿名类型返回。

[HttpPost]
public ActionResult AddToPreRank(int id){
    Player player= new Player();
    player = db.Players.Find(id);
    return Json(new {player});
}

您可以在web环境中使用System.Runtime.Serialization.Json,也可以使用Newtonsoft.Json(http://json.codeplex.com/)在winform环境中解决您的问题。