在<asp:scriptreference>路径属性值

时间:2016-08-10 06:22:38

标签: javascript asp.net telerik

由于阻止客户端使用浏览器缓存的旧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=&lt;%=WebSettings.Version%>"></script>

由于&lt; asp:ScriptReference&gt;是&lt; telerik:RadScriptManager&gt;的子节点我不能只将它们修改为纯HTML标记,如何在&lt; asp:ScriptReference&gt;的路径上追加动态查询字符串?解决JavaScript文件版本问题?

1 个答案:

答案 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>