MVC控制器和Web API控制器之间使用$ .post(...)的不同行为

时间:2015-02-22 22:39:13

标签: 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");
        } else {
            alert(data.msg);
        }
    }, "json");

返回值时,data表示为JSON对象。当我将代码移植到WebAPI时,data中的结果是一个字符串(即"{\"status\":\"SUCCESS\",\"msg\":\"Test\"}"

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

public string TestDb(string appDb, string appUsername, string appPassword, string appHost)
    {
        return JsonConvert.SerializeObject(new { status = "SUCCESS", msg = "Test" });
    }

下面的WebAPI控制器方法

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

从上面的例子中可以看出,两种方法都返回完全相同的结果。我不确定这是否是我(或没有)正确完成的事情所以我的问题是否有其他人遇到过这个问题?

干杯

1 个答案:

答案 0 :(得分:0)

尝试重写您的API方法,如下所示:

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