7

Visual Studio 2015(预览版)中的一项新功能是“ASP.NET MVC 和 Web API……已经统一到一个单一的编程模型中”。

http://blogs.msdn.com/b/webdev/archive/2014/11/12/announcing-asp-net-features-in-visual-studio-2015-preview-and-vs2013-update-4.aspx

我假设这意味着我可以编写单个控制器操作“GetCustomerById”,它返回一个 Customer 对象,并且可以基于内容协商将其呈现为序列化的 Json 或 Html(使用 mvc 视图)。(如果用户使用“Accept: application/json”或“Accept: text/html”请求它)

但我看不出这是怎么做到的,它们似乎仍然需要不同的控制器和方法?

4

1 回答 1

3

这可以在没有新的统一模型的情况下完成。在任何 MVC 控制器中,您都可以检查标头以及Request.IsAjaxRequest()确定是否返回数据的方法。

这是这种方法的简单简化示例:

internal ActionResult ReturnResultAsRequested(object result)
{
  if (Request.Headers["Accept"].Contains("application/json"))
    return Json(result);
  else if (Request.IsAjaxRequest())
    return PartialView(Request.RequestContext.RouteData.Values["Action"], result);
  else
    return View(Request.RequestContext.RouteData.Values["Action"], result);
}
于 2015-01-08T20:25:20.283 回答