需要替换MVC' s Scripts.Render方法

时间:2017-11-03 21:54:58

标签: asp.net-core-mvc

从MVC-pre-Core项目迁移到Core 2版本我震惊地发现@Scripts& @Styles被删除。我依靠能够使用@Scripts.Render("~/bundles/myApp")作为快捷方式,在需要它们的任何页面上导入了六个文件。现在我必须在每个需要它们的页面上拼写所有这些文件?

任何复制行为的方法。已经浏览了Gulp,但看起来更像是部署处理器。

1 个答案:

答案 0 :(得分:1)

除了向生成的HTML添加简单标记之外,Scripts.RenderStyles.Render方法实际上不会执行任何操作。你正在谈论的内容 - 在一次调用中卷起一堆脚本/样式 - 是由MVC提供的捆绑。在ASP.NET Core中,创建这些bundle的方法已经改变了;就是这样。

现在,您有bundleconfig.json,而不是BundleConfig.cs。您只需直接引用捆绑的脚本,而不是调用Scripts.Render来包含捆绑包。与你的风格一样。

默认情况下,每个site.jssite.css都有一个捆绑,分别捆绑(并缩小)到site.min.jssite.min.css。所以,你只需这样做:

<environment names="Staging,Production">
    <script src="~/js/site.min.js" asp-append-version="true"></script>
</environment>

environment标记只是确定此HTML何时包含在输出中。在这里,只有当环境是临时或生产时。脚本标记是对“bundle”的硬引用。这个功能相当于您可以通过以下方式实现的功能:

@Scripts.Render("~/bundles/site")

它本身只会呈现以下脚本标记:

<script src="~/bundles/site?v=abc123"></script>

换句话说,您不需要Scripts.RenderStyles.Render方法,因为它们实际上毫无用处。即使在以前版本的MVC中,您也可以避免使用它们,只需创建直接指向捆绑包的标签。

有关捆绑和缩小如何在ASP.NET Core中工作的详细信息,请参阅documentation