我有web api控制器:
[HttpPost]
public String UploadFile()
{//do some logic
String jsResult="{\"success\":\"false\", \"msg\":\"No file or user ID!\"}";
return jsResult;
}
返回给客户端的字符串是这样的:“{\”success \“:\”false \“,\”msg \“:\”没有文件或用户ID!\“}”;
我手动编写json字符串,但客户端不解析它(我猜因为返回的字符串是用“\”转义的。 从这个控制器方法将json字符串返回到clinet的正确方法是什么?
答案 0 :(得分:4)
尝试自动序列化webapi:
创建模型:
public class UploadResult
{
public UploadResult()
{
}
public bool Success { get; set; }
public string Msg { get; set; }
}
并返回
public UploadResult UploadFile()
{
var r = new UploadResult(){ Success = false, Msg = "No file or user ID!" };
return r;
}
在您的示例中,您显式序列化,结果最终序列化两次。因为WebApi已经在管道中安装了Json序列化程序。
去异步:
public async Task<IHttpActionResult> UploadFile()
{
var r = new UploadResult(){ Success = false, Msg = "No file or user ID!" };
// some "await" logic
return Ok(r);
}
添加using System.Web.Mvc
失败,因为
[System.Web.Http.HttpPost] != [System.Web.Mvc.HttpPost]
[HttpPost]含糊不清。无论如何, Mvc ref不是必需的。删除它并再次添加[HttpPost]
答案 1 :(得分:0)
试试这个:
[HttpPost]
public JsonResult UploadFile()
{//do some logic
String jsResult="{\"success\":\"false\", \"msg\":\"No file or user ID!\"}";
return Json(jsResult);
}
我已将返回类型更改为JsonResult,并使用Json方法格式化结果。