我有一个局部视图(UserControl),它在我的Asp.Net MVC项目中实现了一个简单的寻呼机。此寻呼机需要访问一个只需要包含一次的.js文件,无论父页面上有多少个寻呼机控件实例。
我尝试使用Page.ClientScript.RegisterClientScriptInclude
,但它没有任何效果(我假设因为代码块的评估太晚而无法影响头部控件)。有没有简单的替代方案?
答案 0 :(得分:2)
将其添加到母版页。
然后你可以保证它只被包含一次,你就不会忘记它。使用现代缓存,在每一页上包含它都没有性能损失。
答案 1 :(得分:2)
当您在部分中发送脚本时,在HttpContext.Current.Items中设置一个标志 - 这是一个延迟整个请求的字典。 E.g:
if (!HttpContext.Current.Items.Contains("SentTheScript"))
{
HttpContext.Current.Items["SentTheScript"] = true;
Response.Write(Html.ScriptTag("Script"));
}
这种方式最多只能渲染一次。
答案 2 :(得分:1)
Page.ClientScript.RegisterClientScriptInclude
与传统的ASP.net一起使用。
由于您使用的是asp.net-mvc,所以您只需要将script
文件的js
指令添加到使用此用户控件的页面。
由于对所有站点只有一个缩小的css文件是一个好习惯,因此您可能希望将此文件包含在主css缩小文件中。