由于阻止客户端使用浏览器缓存的旧JavaScript文件,我将查询字符串附加到ASP.NET Web应用程序上的脚本文件路径,查询字符串内容来自服务器端代码。在纯HTML元素中:
<script src="../Scripts/MyScript.js?ver=<%=WebSettings.Version%>"></script>
客户端输出将是:
<script src="../Scripts/MyScript.js?ver=20160810"></script>
它工作正常。但是这种方法在&lt; asp:ScriptReference&gt;中不起作用。如果我使用此代码:
<asp:ScriptReference Path="~/Scripts/MyScript.js?ver=<%=WebSettings.Version%>"/>
似乎ASP.NET会将Path的值上的整个内容视为字符串并对其执行HTML编码,并呈现此类输出:
<script src="../Scripts/MyScript.js?ver=<%=WebSettings.Version%>"></script>
由于&lt; asp:ScriptReference&gt;是&lt; telerik:RadScriptManager&gt;的子节点我不能只将它们修改为纯HTML标记,如何在&lt; asp:ScriptReference&gt;的路径上追加动态查询字符串?解决JavaScript文件版本问题?
答案 0 :(得分:1)
您是否尝试过通过服务器代码生成路径:
protected void Page_Load(object sender, EventArgs e)
{
string path = string.Format("~/JavaScript.js?ver={0}", "versionNumber");
ScriptReference sr = new ScriptReference(path);
RadScriptManager1.Scripts.Add(sr);
}
或者,你可以在脚本管理器之后添加<script>
标签,没有区别
<telerik:RadScriptManager ID="RadScriptManager1" runat="server">
</telerik:RadScriptManager>
<script src="../Scripts/MyScript.js?ver=<%=WebSettings.Version%>"></script>