Visual Studio 2015(预览版)的一个新功能是“ASP.NET MVC和Web API ......已统一到一个编程模型中。”
我认为这意味着我可以编写单个控制器操作“GetCustomerById”,它返回一个Customer对象,并且可以基于内容协商将其呈现为序列化Json或Html(使用mvc视图)。 (如果用户通过“Accept:application / json”或“Accept:text / html”请求它)
但我看不出如何做到这一点,他们似乎仍然需要不同的控制器和方法?
答案 0 :(得分:1)
这可以在没有新的统一模型的情况下完成。在任何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);
}