MVC 控制器和 Web API 控制器之间 $.post(...) 的不同行为
Differing behavior with $.post(...) between MVC controller and WebAPI controller
周末正在编写一个 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");
当此 return 值 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" });
}
从上面的例子可以看出,两种方法return的结果完全一样。我不确定这是否是我已经(或没有)正确完成的事情所以我的问题是有没有其他人遇到过这个?
干杯
尝试像这样重写您的 API 方法:
[HttpPost]
public object TestDb([FromBody] TestDbDTO testDb)
{
return new { status = "SUCCESS", msg = "Test" };
}
周末正在编写一个 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");
当此 return 值 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" });
}
从上面的例子可以看出,两种方法return的结果完全一样。我不确定这是否是我已经(或没有)正确完成的事情所以我的问题是有没有其他人遇到过这个?
干杯
尝试像这样重写您的 API 方法:
[HttpPost]
public object TestDb([FromBody] TestDbDTO testDb)
{
return new { status = "SUCCESS", msg = "Test" };
}