Jquery MVC控制器和WebAPI控制器之间的$.post(…)行为不同

Jquery MVC控制器和WebAPI控制器之间的$.post(…)行为不同,jquery,json,asp.net-web-api,Jquery,Json,Asp.net Web Api,周末我正在编写一个MVC应用程序,并决定应用程序的一部分应该使用WebAPI,我有下面的javascript调用一个简单的MVC控制器操作 $.post("/App/TestDb", request, function (data) { if (data.status == "SUCCESS") { alert(data.msg); $("#installBtn").removeAttr("disabled");

周末我正在编写一个MVC应用程序,并决定应用程序的一部分应该使用WebAPI,我有下面的javascript调用一个简单的MVC控制器操作

    $.post("/App/TestDb", request, function (data) {
        if (data.status == "SUCCESS") {
            alert(data.msg);
            $("#installBtn").removeAttr("disabled");
        } else {
            alert(data.msg);
        }
    }, "json");
返回值时,
数据
表示为JSON对象。当我将代码移植到WebAPI时,
数据中的结果是一个字符串(即
“{\”状态\“:\”成功\“,\”消息\“:\”测试\“}”

下面的MVC控制器方法(删除了其他代码以保持示例简单)

以及下面的WebAPI控制器方法

[HttpPost]
public string TestDb([FromBody] TestDbDTO testDb)
    {
        return JsonConvert.SerializeObject(new { status = "SUCCESS", msg = "Test" });
    }
从上面的示例中可以看到,两个方法返回完全相同的结果。我不确定这是否是我已经(或没有)正确完成的事情,所以我的问题是,是否有其他人遇到过这种情况


干杯

试着像这样重写您的API方法:

[HttpPost]
public object TestDb([FromBody] TestDbDTO testDb)
{
    return new { status = "SUCCESS", msg = "Test" };
}
[HttpPost]
public object TestDb([FromBody] TestDbDTO testDb)
{
    return new { status = "SUCCESS", msg = "Test" };
}