【问题标题】:Using HttpClient in cshtml file在 cshtml 文件中使用 HttpClient
【发布时间】:2015-12-17 16:54:05
【问题描述】:

由于某些要求,我需要将带有 System.Net.Http.HttpClient 的代码从控制器移动到 cshtml 文件。但是,我似乎无法在 cshtml 文件中调用 System.Net.Http.HttpClient。

那么,我的问题是如何在 cshtml 文件中调用 httpclient?

至于为什么我需要在 cshtml 文件中调用 HttpClient,这是因为我需要为使用相同布局的页面使用相同的外部 API。这意味着如果我需要将它包含在控制器中,我将不得不包含在几乎每个控制器中(超过一百个),我觉得这是多余的。

场景:调用web api返回菜单列表并显示在cshtml文件中,Layout="CustomLayout.cshtml"

我希望给出的场景能很好地解释为什么我需要在 cshtml 中调用 httpclient。如果有更好的选择,我很感激。

【问题讨论】:

  • 我仍然看不出有任何理由让您在 cshtml 中的页面上放置 HttpClient 或 API 调用,这很危险,只会破坏您的架构,请考虑为此使用 RenderAction 或 ViewModels跨度>

标签: c# asp.net-mvc api asp.net-mvc-4


【解决方案1】:

您可以为使用(或不使用)相同布局的页面使用外部 API,而无需将该代码从控制器移动到视图。如果这样做,您将破坏 MVC 架构设计。视图应该只关心显示和渲染数据。

另外一点是,如果两个视图需要访问相同的代码来调用外部提供程序,您最终会在视图中出现重复的 c# 代码。

更好的方法是将外部 Api 代码集中在某种服务层后面,并使用 RenderAction 或 Action 助手来启动与该服务层的通信。

【讨论】:

    猜你喜欢
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    • 1970-01-01
    相关资源
    最近更新 更多