我正在用ASP.NET Core、typescript、react和webpack构建一个web应用程序。它被称为Ui.WebApp
。React应用程序位于Ui.WebApp/ClientApp
,webpack构建输出到Ui.WebApp/ClientApp/dist
。在我的Startup.cs
中,我包含了
app.UseStaticFiles(new StaticFileOptions {
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "ClientApp/dist"))
}
);
当我在_Layout.cshtml
中加载<link rel="stylesheet" href="~/main.css" asp-append-version="true" type="text/css" />
的样式时,它是有效的,而<link rel="stylesheet" href="~/main.css" asp-append-version="true" type="text/css" />
实际上驻留在Ui.WebApp/ClientApp/dist/main.css
中。
现在,我需要在webpack中构建脚本,在它们的名称中使用哈希,即main_968495a262da1789981f.js
。在ASP.NET中的模式是使用<script asp-src-include="~/main_*.js"></script>
。但是,当从浏览器查看页面时,没有得到脚本标记,因为我假设ASP.NET没有找到任何匹配该模式的文件(但我可以在文件资源管理器中看到它)。
奇怪的是,当我手动将散列后的js文件放入Ui.WebApp/wwwroot
(否则我不会使用它)时,脚本标记被正确地填充,甚至当我删除文件夹并刷新页面时,它们仍然存在。
所以我假设ASP.NET在编译时验证标记助手,因此看不到我在Startup.cs
中所做的配置。
有没有什么方法可以让ASP.NET在运行时验证标记助手并选择正确的位置?
2条答案
按热度按时间mbskvtky1#
我刚刚遇到这个问题,我想我已经弄明白了。很多例子都显示使用了代字号,但是如果你看一下intellisense提示,它说这是相对于你的Webroot设置的。所以你不需要代字号,事实上它似乎打破了它。这似乎至少对.net core 2.1是正确的
我最终在您的示例中实现了如下功能:
这是我的第一次尝试,但没有成功:
但是当改变到这个,它确实!
希望这能为其他人节省大量的挫折感。
xfyts7mz2#
任何遇到
asp-src-include
问题人都应该检查项目是否包含@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
如果TagHelper根本不工作,可以提供帮助