如何从webpart调用外部Javascript文件

时间:2011-02-21 16:45:05

标签: sharepoint-2010 web-parts

我正在为SharePoint 2010构建Web部件,我想添加simple modal

我已经注册了外部js脚本,如下所示:

ScriptLink.Register(this.Page, "js/jquery-1.5.min.js", true);   
ScriptLink.Register(this.Page, "js/jquery.simplemodal-1.4.1.js", true);   

不知何故,我收到一条消息,指出找不到该文件,因为它正在查看1033/_layouts目录,或类似的内容。

所以,我的问题是:如何从我的webpart引用外部JavaScript文件,而不将它们放在那个目录中?

4 个答案:

答案 0 :(得分:11)

在我看来,您应该将脚本部署到布局,以及不打算由用户自定义的图像,样式表等。

您可以在VS 2010中将文件夹“Layouts”映射到您的项目。 然后添加子文件夹以反映您的项目名称等。(右键单击项目 - >添加 - >> SharePoint“布局”“映射文件夹”

布局
  - ProjectName
  - - 脚本
   - - - jquery-1.5.min.js

然后,在部署解决方案时,脚本将被复制到正确的位置..

在您的webpart中,您可以引用您的脚本,如:

在代码中:

ScriptLink.Register(this.Page, "ProjectName/Scripts/jquery-1.5.min.js", false);

但是,我更喜欢.ascx:

<SharePoint:ScriptLink ID="ScriptLink2" Name="ProjectName/Scripts/jquery-1.5.min.js" runat="server" OnDemand="false" Localizable="false" />

答案 1 :(得分:2)

如果在ScriptLink标记上将“Localizable”属性设置为“false”,则它将省略“1033”文件夹。

答案 2 :(得分:0)

我不确定这在SharePoint 2010中是否仍然有效,但以下是我在SharePoint 2007中的工作方式:

ScriptLink.Register(this.Page, "js/jquery-1.5.min.js", true);
List<string> list = (List<string>)HttpContext.Current.Items["sp-ScriptLinkValues"];
int index = list.Count - 1;
string item = list[index];
list[index] = item.Replace("/_layouts/1033/js", 
    "http://ajax.googleapis.com/ajax/libs/jquery/1.5");

答案 3 :(得分:-1)

如果添加另一个“内容编辑器”Web部件,则可以将JavaScript文件的“包含”代码放在完整的文件位置。