1

我有一些在继承自 UserControl 的类中使用 RegisterClientScriptInclude 的旧版 ASP.NET WebForms 代码。我想用一个新奇的Bundle替换对 RegisterClientScriptInclude 的多次调用。如何在已编译程序集的深处从我的捆绑路由解析捆绑 URL?

4

2 回答 2

1

假设您已经注册了捆绑包并且只想生成对捆绑包的引用。

最简单的方法是打电话

BundleCollection.ResolveBundleUrl(<path to bundle, i.e. "~/bundles/mybundle">).  

请注意,不使用 Scripts 帮助器来渲染标签,您将始终获得对包的引用,当您直接调用 ResolveBundleUrl 时,不会有自动的非包功能。

于 2013-01-02T18:47:32.077 回答
0

试试这个方法:

private void RegisterJavaScriptBundle(string bundleIdent)
    {
        var bundleUrl = String.Format("~/bundles/{0}", bundleIdent);

        var name = String.Format("Bundle{0}", bundleIdent);

        if (ScriptManager.ScriptResourceMapping.GetDefinition(name) == null)
            ScriptManager.ScriptResourceMapping.AddDefinition(name, new ScriptResourceDefinition { Path = bundleUrl });

        ScriptManager.RegisterNamedClientScriptResource(this.Page, name);
    }

比在用户控件的加载事件中调用它:

this.RegisterJavaScriptBundle("MyBundle");

这将使用内容哈希生成对脚本的引用:

<script src="/bundles/MyBundle?v=B6mdgLTYJ2gPQv_XxE07ACAAaNA6Lo4L_KxViWZE-CY1" type="text/javascript"></script>
于 2016-05-19T09:51:10.150 回答