ASP.NET Core 9为何移除importmap?如何保留且不禁用ScriptTagHelper?
ASP.NET Core 9中保留importmap脚本的解决方案
在新建的ASP.NET Core 9应用或从.NET 8升级的项目中,添加到Views/Shared/_Layout.cshtml里的importmap脚本会被自动移除:
<script type="importmap"> { "imports": { "axios": "/js/axios.min.js", "axios-retry": "/js/axios-retry.js", "is-retry-allowed": "/js/is-retry-allowed.js" } } </script>
在Chrome开发者工具的Sources面板中,.NET 8应用能正常显示该脚本,但.NET 9中完全看不到。经排查问题根源是ScriptTagHelper,虽然全局移除该TagHelper可以解决问题,但不想永久禁用它的其他功能。
解决方法
- 给目标script标签添加
asp-ignore属性:在importmap脚本标签上添加asp-ignore="true",ScriptTagHelper会跳过对这个标签的处理,脚本即可正常保留:
<script type="importmap" asp-ignore="true"> { "imports": { "axios": "/js/axios.min.js", "axios-retry": "/js/axios-retry.js", "is-retry-allowed": "/js/is-retry-allowed.js" } } </script>
- 局部控制TagHelper作用范围(可选):如果不想使用
asp-ignore属性,也可以在包含该importmap的视图文件中,先临时移除ScriptTagHelper,写完importmap后再重新添加,这样只会影响当前视图的局部范围,不干扰其他页面的TagHelper功能:
@removeTagHelper Microsoft.AspNetCore.Mvc.TagHelpers.ScriptTagHelper, Microsoft.AspNetCore.Mvc.TagHelpers <script type="importmap"> { "imports": { "axios": "/js/axios.min.js", "axios-retry": "/js/axios-retry.js", "is-retry-allowed": "/js/is-retry-allowed.js" } } </script> @addTagHelper Microsoft.AspNetCore.Mvc.TagHelpers.ScriptTagHelper, Microsoft.AspNetCore.Mvc.TagHelpers
内容的提问来源于stack exchange,提问作者Adam Benson
相关产品推荐
相关产品推荐

