c# - 包括所有匹配 regex razor cshtml 的文件

标签 c# razor asp.net-core asp.net-core-mvc

我想在 CSHTML 文件中包含 Angular2 构建文件。

目前,我的包含是:

@section scripts {
    <script src="~/dist/main.js" asp-append-version="true"></script>
}

但是 Angular2 在每个产品构建中生成文件名中具有不同标识符的文件。

chunk    {0} main.2e0750e4cb976b8dca8a.bundle.js (main) 15.8 kB {3} [initial] [rendered]
chunk    {1} styles.b64dd2f7c2e3011c4efb.bundle.css (styles) 154 kB {4} [initial] [rendered]
chunk    {2} scripts.e7e62c29938f18f13e86.bundle.js (scripts) 128 kB {4} [initial] [rendered]
chunk    {3} vendor.05b8df0708b580c61647.bundle.js (vendor) 3.42 MB [initial] [rendered]
chunk    {4} inline.1b4aa06545162c1bb581.bundle.js (inline) 0 bytes [entry] [rendered]

我不想取消激活(如果可能的话)包含这些标识符的事实(用于非缓存目的)。一个人在 github 问题页面上回答 可以使用一些正则表达式 来制作包含:

/(main|styles|scripts|vendor|inline).*.bundle.(map|js|css)/g

但我不知道如何将它传递到我的 C#/cshtml 文件。

它的结果应该是包括所有与给定目录中的模式匹配的文件(wwwroot,或 ~ 作为快捷方式)。

关于如何实现这一点有什么想法吗?

最佳答案

您可以为脚本使用 asp-src-include 标记帮助程序,为链接 (css) 使用 asp-href-include

<script asp-src-include="~/dist/main.*.bundle.js" asp-append-version="true"></script>
<link asp-href-include="~/dist/styles.*.bundle.css"/>

但是 iirc 你不能在其中使用正则表达式,只能使用全局路径(即 dist/**/*.js,其中 ** 也会查看所有子文件夹。

如果这不符合您的需要,您需要编写自己的标签助手。

有关 LinkTagHelper 的当前实现,请参阅 GitHub和 ScriptTagHelper .

无论如何我都不建议您对主要部分使用正则表达式,因为您无法控制文件包含的顺序。所以最好手动控制这个并且只制作标识符/哈希值变量。

关于c# - 包括所有匹配 regex razor cshtml 的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41387455/

相关文章:

c# - RenderAction 差异

c# - 使用嵌套数据创建 Razor 表

c# - 带列表框的 ContentPresenter

c# - 当涉及到带有大量可选参数的函数时,约定是什么?

c# - 全局类实例计数(使用信号量)

iis - 在IIS 7.5上运行ASP.NET Core时日志会去哪里?

asp.net-core - 通过 API 调用编辑 Asp.Net 核心设置?

c# - 如何将 asp.net ajax 工具箱自动完成中的选定值添加到标签?

javascript - 从包含瑞典字符的模型字符串设置 javascript 变量

c# - 如何从 ASP.NET Core 3.1 MVC 中的选定下拉列表中获取输入文本