如果我使用ASP.NET ScriptManager / ScriptManagerProxy控件的CompositeScript功能,我无法使Path属性起作用:
我的代码
<asp:ScriptManagerProxy ID="scriptProxy2" runat="server">
<CompositeScript Path="~/Includes/Javascript/Combined.js">
<Scripts>
<asp:ScriptReference Path="~/Includes/Javascript/MyFile1.js" />
<asp:ScriptReference Path="~/Includes/Javascript/MyFile2.js" />
</Scripts>
</CompositeScript>
</asp:ScriptManagerProxy>
我的页面中包含正确的脚本标记:
<script src="../Includes/Javascript/Combined.debug.js" type="text/javascript"></script>
但当然,该文件不存在,因此浏览器获得404。
我错过了什么吗?
答案 0 :(得分:3)
您是否指定了使用ScriptReference
标记合并的源脚本 - 请参阅documentation。
编辑:使用反射器之后,我发现如果使用指定Path
属性,则不会发生脚本组合 - 它只是将脚本引用到指定的路径(根据修改发布/调试模式和文化(如果启用了本地化))。谷歌搜索后,发现有意使用路径属性是为了解决网址限制为1024个字符。来自this MSDN documentation:
a。脚本引用的数量 CompositeScriptReference实例可以 包含受到的大小的限制 结果URL。 URL不能 超过1024个字符。
如果你必须解决这个问题 限制,你有两个选择。该 第一种选择是减少数量 ScriptReference对象的那个 复合脚本包含。第二 选项是手动组合 脚本到一个静态文件中。在 那种情况下,您可以设置路径 属性到静态的位置 文件。
我还偶然发现this link评论部分中有大量信息。其中一条评论明确指出
你可以组合多个物理 使用该功能的脚本文件,但是 我们真的不推荐它那样 是一些与之相关的服务器开销 文件监控。你是什么 描述更好地处理 在编译时“构建”脚本 时间而不是组合 在运行时。该功能真的是为了 想要的应用程序开发人员 结合各种现有脚本 他们在他们中使用的组件 应用
总而言之,我认为既不支持也不建议您如何使用combine脚本。我建议您使用构建时脚本组合 - 以下资源将帮助您实现相同的目标:
http://encosia.com/2009/05/20/automatically-minify-and-combine-javascript-in-visual-studio/
查看Chirpy加载项中的mashing功能:http://www.weirdlover.com/2010/07/18/chirpy-attains-godlike-abilities-in-version-1-0-0-4/#mash