Controller 用于处理浏览器请求。它从 Model 获得数据并调用返回响应的 View。

内容协商

当 Action 的返回值为 JsonResult 时,不支持内容协商,只能返回 JSON 格式数据:

  1. public JsonResult DetailsInJson()
  2. {
  3. var model = _studentRepository.GetStudent(1);
  4. return Json(model);
  5. }

当返回值为 ObjectResult 时,支持内容协商,即可以根据请求时 HTTP Header 中设置的 Accept 属性来返回数据:

public ObjectResult DetailsInObject()
{
    var model = _studentRepository.GetStudent(1);

    return new ObjectResult(model);
}

用 Fidder 模拟 HTTP 请求进行演示

设置 Accept 为 JSON:

User-Agent: Fiddler
Host: localhost:3290
Accept: application/json

返回 JSON 数据:
image.png

设置 Accept 为 XML:

User-Agent: Fiddler
Host: localhost:3290
Accept: application/xml

返回 XML 数据:
image.png