This can be done without a new unified model. In any MVC, you can check the headers as well as the Request.IsAjaxRequest()
method to determine how to return the data.
The following is an example of a simplified example:
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); }
source share