加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 统一MVC和Web Api – 视图和json的相同控制器?

发布时间:2020-12-16 03:45:22 所属栏目:asp.Net 来源:网络整理
导读: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 我假设这意
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”请求它)

但我看不出如何做到这一点,他们似乎仍然需要不同的控制器和方法?

解决方法

这可以在没有新的统一模型的情况下完成.在任何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);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读