如何使用 ASP.NET Core MVC 对 HTML 文件发出获取请求
How to make a get request for an HTML file using ASP.NET Core MVC
我正在制作一个 ASP.NET Core MVC 项目。我设置了一个 HomeController,设置了包含 Home 和 Shared 文件夹的 Views 文件夹,在这些文件夹中我有相应的 .cshtml 文件(例如 Index.cshtml、_Layout.cshtml和 _ViewStart.cshtml)。我还有一个 PartialViews 文件夹,里面有一堆 HTML 文件(不是 .cshtml 文件)。
我想做的就是从浏览器发出 Ajax get 请求,获取 PartialViews 文件夹中的 HTML 文件(需要明确的是,该文件夹的路径为 MyProject\Areas\MyArea\PartialViews\SomeDoc.html).我知道如果这个 HTML 文件在 wwwroot 文件夹中(静态文件保存在那里——我也在使用它)我可以向 url 'localhost/SomeDoc.html' 发出一个获取请求。但是它不在 wwwroot 下,所以我想我必须通过我在 MyArea 中定义的 HomeController?我不确定如何设置获取请求的格式,以便 HomeController.Index()
中的 return View()
知道在指定的文件夹路径中获取和 return html 文件。我试过这个 url:'localhost/MyArea/Home/PartialViews/SomeDoc.html',尽管那只是 return 一个 404。
ASP.NET核心docs pertaining to MVC don't really seem to address this unless I'm misunderstanding them. Another thing I'm not sure about is whether these HTML files in this PartialViews folder are supposed to be used like this article on using partial views with MVC描述。我很困惑,因为文章 (a) 仅引用 .cshtml 文件(而我只有 html 文件),并且 (b) 没有解释如何格式化视图请求(除非,我又遗漏了什么)。
看来您需要多花点时间在文档上。默认情况下,唯一公开提供的目录是 wwwroot
。如果您希望静态文件中间件也为另一个目录提供服务,则需要对其进行配置。但是,直接为您的 Views
目录提供服务是完全 100% 不合适的,所以不要那样做。
如果您希望能够请求静态 HTML 文件,请将它们添加到 wwwroot
下,或者为此目的创建一个完全不同的目录,并通过静态文件中间件提供该目录。
不过,通常情况下,static HTML 并不过分有用,如果您确实需要 static HTML,它会回避为什么它不是视图的一部分的问题。正常路径是 .cshtml
视图,ASP.NET Core 将呈现给 HTML 作为请求管道的一部分到 return 响应。
简单地说,您只需创建一个 returns PartialView
的操作并传入您想要 return 的 .cshtml
文件的名称,以及一个模型,如果适用。然后,在您的 JS 中,您对绑定到该操作的路由执行 AJAX 请求,然后返回呈现为 HTML.
的部分视图
我正在制作一个 ASP.NET Core MVC 项目。我设置了一个 HomeController,设置了包含 Home 和 Shared 文件夹的 Views 文件夹,在这些文件夹中我有相应的 .cshtml 文件(例如 Index.cshtml、_Layout.cshtml和 _ViewStart.cshtml)。我还有一个 PartialViews 文件夹,里面有一堆 HTML 文件(不是 .cshtml 文件)。
我想做的就是从浏览器发出 Ajax get 请求,获取 PartialViews 文件夹中的 HTML 文件(需要明确的是,该文件夹的路径为 MyProject\Areas\MyArea\PartialViews\SomeDoc.html).我知道如果这个 HTML 文件在 wwwroot 文件夹中(静态文件保存在那里——我也在使用它)我可以向 url 'localhost/SomeDoc.html' 发出一个获取请求。但是它不在 wwwroot 下,所以我想我必须通过我在 MyArea 中定义的 HomeController?我不确定如何设置获取请求的格式,以便 HomeController.Index()
中的 return View()
知道在指定的文件夹路径中获取和 return html 文件。我试过这个 url:'localhost/MyArea/Home/PartialViews/SomeDoc.html',尽管那只是 return 一个 404。
ASP.NET核心docs pertaining to MVC don't really seem to address this unless I'm misunderstanding them. Another thing I'm not sure about is whether these HTML files in this PartialViews folder are supposed to be used like this article on using partial views with MVC描述。我很困惑,因为文章 (a) 仅引用 .cshtml 文件(而我只有 html 文件),并且 (b) 没有解释如何格式化视图请求(除非,我又遗漏了什么)。
看来您需要多花点时间在文档上。默认情况下,唯一公开提供的目录是 wwwroot
。如果您希望静态文件中间件也为另一个目录提供服务,则需要对其进行配置。但是,直接为您的 Views
目录提供服务是完全 100% 不合适的,所以不要那样做。
如果您希望能够请求静态 HTML 文件,请将它们添加到 wwwroot
下,或者为此目的创建一个完全不同的目录,并通过静态文件中间件提供该目录。
不过,通常情况下,static HTML 并不过分有用,如果您确实需要 static HTML,它会回避为什么它不是视图的一部分的问题。正常路径是 .cshtml
视图,ASP.NET Core 将呈现给 HTML 作为请求管道的一部分到 return 响应。
简单地说,您只需创建一个 returns PartialView
的操作并传入您想要 return 的 .cshtml
文件的名称,以及一个模型,如果适用。然后,在您的 JS 中,您对绑定到该操作的路由执行 AJAX 请求,然后返回呈现为 HTML.