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()

启用XML格式数据支持

为不支持的数据格式请求返回406错误码

原文地址:https://www.cnblogs.com/wujuncheng/p/14395249.html