我正在为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文件,而不将它们放在那个目录中?
答案 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文件的“包含”代码放在完整的文件位置。