2

有什么办法可以做到这一点吗?

捆绑的一些好处是:

  • 最小化
  • Gzip 压缩
  • 该请求具有用于处理文件版本(缓存)的令牌参数。

在我的站点中,我使用了很多捆绑包,但在某些页面中我只有 1 个脚本,我认为我不应该只为 1 个脚本创建捆绑包。有什么办法可以用方法来使用这三个好处Url.Content

我的 utopic 解决方案是设置一些东西(可能在 web.config 中),每当调用 Url.Content 时,它都会添加此功能。以任何一种方式使用它:

<script type="text/javascript" src="@Url.Content("~/Scripts/...")"></script>
<script type="text/javascript" src="~/Scripts/..."></script>

(第二个是因为我使用的是Razor 2

如果那是不可能的,我可以为 UrlHelper 创建一个扩展方法来添加此功能。

谢谢!

4

1 回答 1

1

创建包含一个文件的捆绑包以获得缩小和版本控制的好处并没有什么问题。您还必须使用 Scripts.Render 帮助器,目前 UrlHelper 中不支持此功能,但正如您已经提到的,您可以编写一个扩展方法来调用 Scripts 帮助器。

更新(由 OP)

这是我为任何想要使用它的人的扩展方法:

public static IHtmlString DynamicScriptsBundle(this HtmlHelper htmlHelper, string nombre, params string[] urls)
{
    string path = string.Format("~/{0}", nombre);
    if (BundleTable.Bundles.GetBundleFor(path) == null)
        BundleTable.Bundles.Add(new ScriptBundle(path).Include(urls));
    return Scripts.Render(path);
}

public static IHtmlString DynamicStylesBundle(this HtmlHelper htmlHelper, string nombre, params string[] urls)
{
    string path = string.Format("~/{0}", nombre);
    if (BundleTable.Bundles.GetBundleFor(path) == null)
        BundleTable.Bundles.Add(new StyleBundle(path).Include(urls));
    return Styles.Render(path);
}
于 2012-10-30T17:05:46.720 回答