Asp.net mvc 4 ASP.NET Mvc 4使用包';Url.Content的好处

Asp.net mvc 4 ASP.NET Mvc 4使用包';Url.Content的好处,asp.net-mvc-4,bundling-and-minification,urlhelper,Asp.net Mvc 4,Bundling And Minification,Urlhelper,我有什么办法可以做到这一点吗 捆绑销售的一些好处包括: 最小化 Gzip压缩 该请求有一个令牌参数,用于处理文件版本(缓存) 在我的站点中,我使用了很多捆绑包,但在一些页面中,我只有一个脚本,我认为我不应该只为一个脚本创建捆绑包。有什么方法可以将这三个优点与Url.Content方法结合使用吗 我的乌托邦解决方案是设置一些东西(可能在web.config中),每当调用Url.Content时,它就会添加这个功能。以以下任一方式使用它: <script type="text/javasc

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

捆绑销售的一些好处包括:

  • 最小化
  • Gzip压缩
  • 该请求有一个令牌参数,用于处理文件版本(缓存)
在我的站点中,我使用了很多捆绑包,但在一些页面中,我只有一个脚本,我认为我不应该只为一个脚本创建捆绑包。有什么方法可以将这三个优点与
Url.Content
方法结合使用吗

我的乌托邦解决方案是设置一些东西(可能在web.config中),每当调用Url.Content时,它就会添加这个功能。以以下任一方式使用它:

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

(第二个是因为我正在使用)

如果这是不可能的,我可以对UrlHelper进行扩展方法来添加此功能


谢谢

用一个文件创建一个捆绑包,以获得缩小和版本控制的好处,这并没有什么错。您还必须使用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);
}

我已经有了我的HtmlHelper来创建(如果需要)并从视图中使用一个包。我仍然不太相信为1个文件创建捆绑包。没有其他方法吗?对于从.aspx文件中使用
Bundles.Add()
,这是一个很好的解决方案。我最近将一个web应用程序转换为使用捆绑,并考虑使用这种方法,但这意味着需要大量手动编辑才能将
标记替换为
。我本想简单地将
标记包装到一个自定义服务器控件中,但我的解决方案最终有点复杂,需要手动编辑。哦,好吧。如果好奇,请参见我的备选解决方案: