MVC .NET Core 2.0 - _Layout 静态文件不会为控制器的操作方法加载

MVC .NET Core 2.0 - _Layout static files do not load for action methods of a controller

我在 VS 2017 中开始了一个新项目并创建了一个 ASP.NET Core 2.0 Web 应用程序(模型视图控制器)。然后我将 _Layout.cshtml 的内容更改为我想要使用的界面(包括 @Renderbody 等),并将它需要的所有静态内容包含在 wwwroot 中并保存和 Ctrl+F5 布局显示所有正确的格式和功能。目前没问题:

然而,从这一点开始,_Layout 的静态内容文件的 none 显示在任何其他视图中。例如,如果我访问以下任何一个 URL:

http://localhost:52786/home/
http://localhost:52786/home/index
http://localhost:52786/home/about
http://localhost:52786/home/contact 

我看到了这个:

Startup.csConfigure()

中已经有 app.UseStaticFiles()

听起来您的 HTML 正文内容可能放错地方了。使用 ASP.NET MVC &ASP.NET Core MVC,每个页面的 HTML 从 /Views 目录(默认情况下由 Home 控制器)提供,而不是从 /wwwroot,它是 C# HTML (.cshtml) 就像 _Layout.cshtml 文件一样。图片、静态 javascript 等通常位于 /wwwroot 目录中,因为这些是您网站的客户端而不是服务器端的部分。

尝试将您的索引、关于和联系 HTML 内容复制为 /Views/Home 目录下的 .cshtml 文件,替换模板中的任何内容,但位于顶部的 @{ViewData["Title"] = "Home";} 除外.然后布局模板应将这些作为正文内容(其中 @renderbody... 在 _Layout.cshtml 中)。

如果这仍然不起作用,我需要更多关于您对默认模板所做更改的信息。希望这对您有所帮助!

感谢詹姆斯的回复。我想通了,这实际上是我发布的一个菜鸟错误,这样其他新开发人员就不会被卷入其中。

当你想引用 wwwroot 文件夹中的内容时,如果你在目录名称前没有“~/”引用它们,它适用于 _Layout 页面,这让我误以为它应该适用于 _Layout 页面的其他部分应用程序,但您应该在文件夹名称前明确包含“~/”,否则静态文件将无法访问。