MVC模式从Controller返回内容协商格式(Json或者Xml)
WebAPI默认的返回格式Json,但是MVC是View,如果在MVC的控制器中,想要返回Json格式该怎么操作呢
在MVC的控制器中返回json数据只需要然会JsonResult
而不是ActionResult
public JsonResult Index()
{
var student = new Student()
{
Id = 1,
Email = "wujunchengman@163.com",
Major = "计算机",
Name = "吴俊城"
};
return Json(student);
}
这时候请求其地址就会返回json数据,但是有时候我们希望这个请求可以进行内容协商,即由http请求头的Accept
来决定,如果是application/json
则返回json数据,如果是application/xml
则返回xml数据,面对这种需求,可以使用ObjectResult
public ObjectResult Index()
{
var student = new Student()
{
Id = 1,
Email = "wujunchengman@163.com",
Major = "计算机",
Name = "吴俊城"
};
return new ObjectResult(student);
}
使用ObjectResult在返回数据时会根据http请求头的设置选用对应的格式化器,这样只要设置了格式对应的格式化器,就可以自动返回对应格式
asp.net core默认只包含了json的格式化器,如果需要使用xml,需要在controller后面添加.AddXmlDataContractSerializerFormatters()