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 属性来返回数据:

  1. public ObjectResult DetailsInObject()
  2. {
  3. var model = _studentRepository.GetStudent(1);
  4. return new ObjectResult(model);
  5. }

用 Fidder 模拟 HTTP 请求进行演示

设置 Accept 为 JSON:

  1. User-Agent: Fiddler
  2. Host: localhost:3290
  3. Accept: application/json

返回 JSON 数据:
image.png

设置 Accept 为 XML:

  1. User-Agent: Fiddler
  2. Host: localhost:3290
  3. Accept: application/xml

返回 XML 数据:
image.png