如何在每个局部视图中包含一次外部JavaScript文件?

时间:2010-03-12 03:20:15

标签: javascript asp.net-mvc include

我有一个局部视图(UserControl),它在我的Asp.Net MVC项目中实现了一个简单的寻呼机。此寻呼机需要访问一个只需要包含一次的.js文件,无论父页面上有多少个寻呼机控件实例。

我尝试使用Page.ClientScript.RegisterClientScriptInclude,但它没有任何效果(我假设因为代码块的评估太晚而无法影响头部控件)。有没有简单的替代方案?

3 个答案:

答案 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缩小文件中。