【问题标题】:How to make a get request for an HTML file using ASP.NET Core MVC如何使用 ASP.NET Core MVC 对 HTML 文件发出 get 请求
【发布时间】:2018-03-28 01:59:28
【问题描述】:

我正在制作一个 ASP.NET Core MVC 项目。我设置了 HomeController,设置了带有 Home 和 Shared 文件夹的 Views 文件夹,在这些文件夹中我有适当的 .cshtml 文件(例如 Index.cshtml、_Layout.cshtml 和 _ViewStart.cshtml)。我还有一个 PartialViews 文件夹,里面有一堆 HTML 文件(不是 .cshtml 文件)。

我要做的就是从浏览器发出 Ajax 获取请求,以获取 PartialViews 文件夹中的 HTML 文件(为了清楚起见,该文件夹的路径为 MyProject\Areas\MyArea\PartialViews\SomeDoc.html)。我知道如果这个 HTML 文件在 wwwroot 文件夹中(静态文件保存在那里——我也在使用这个),我可以向 url 'localhost/SomeDoc.html' 发出获取请求。但是它不在wwwroot下,所以我想我必须通过我在MyArea中定义的HomeController?我不确定如何格式化获取请求,以便HomeController.Index() 中的return View() 知道获取并返回指定文件夹路径中的html 文件。我试过这个网址:'localhost/MyArea/Home/PartialViews/SomeDoc.html',虽然它只返回一个 404。

ASP.NET Core docs pertaining to MVC 似乎并没有真正解决这个问题,除非我误解了它们。我不确定的另一件事是,这个 PartialViews 文件夹中的这些 HTML 文件是否应该像this article on using partial views with MVC 描述的那样使用。我很困惑,因为文章 (a) 仅引用 .cshtml 文件(而我只有 html 文件),并且 (b) 没有解释如何格式化视图请求(除非我再次遗漏了一些东西)。

【问题讨论】:

  • 由于您使用的是 MVC,因此您的部分视图应该是 .cshtml 文件。而且因为您使用的是 MVC,这意味着您的站点/api 是 Restful,通常不包含文件作为路径的一部分。放开 HTML 文件……你必须忘掉你所学的东西 ;)

标签: c# asp.net-core-mvc partial-views


【解决方案1】:

看来您需要花更多时间在文档上。默认情况下,唯一公开服务的目录是wwwroot。如果您希望静态文件中间件也提供另一个目录,则需要对其进行配置。但是,直接提供 Views 目录是完全 100% 不合适的,所以不要这样做。

如果您希望能够请求静态 HTML 文件,请将它们添加到 wwwroot 下,或者为此目的创建一个完全不同的目录并通过静态文件中间件提供服务。

不过,通常情况下,静态 HTML 并没有太大用处,如果您真的需要静态 HTML,那么问题来了,为什么它一开始就不是视图的一部分。正常路径是拥有.cshtml 视图,ASP.NET Core 会将其呈现为 HTML 作为请求管道的一部分以返回响应。

简单地说,您只需创建一个返回 PartialView 的操作,并传入您要返回的 .cshtml 文件的名称,以及模型(如果适用)。然后,在您的 JS 中,您对绑定到该操作的路由执行 AJAX 请求,然后您将返回呈现为 HTML 的局部视图。

【讨论】:

  • 谢谢,克里斯。我是从启动它的人那里获取这段代码的,所以我不确定为什么会有一个包含一堆 HTML 文件的 PartialViews 文件夹。我相信我可以将它们移到wwwroot 下,因为从某种意义上说它们是“静态”部分视图——它们是静态模板,只需要提供给浏览器,然后 Angular 就会知道如何动态解释它们。
猜你喜欢
  • 1970-01-01
  • 2020-10-10
  • 2023-03-29
  • 2018-10-17
  • 1970-01-01
  • 2011-06-18
  • 1970-01-01
  • 2020-08-24
  • 2018-08-25
相关资源
最近更新 更多