Sitefinity将javascript添加到自定义母版页

时间:2014-09-29 08:52:23

标签: javascript master-pages sitefinity

我是Sitefinity的新手。我们正在尝试创建一些自定义母版页,其中我们需要包含一些javascript文件。所以我们创建了一个项目如下: enter image description here

在Default.Master中,我们尝试添加.js文件,如下所示。但它不起作用

<%@ Master Language="C#" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title></title>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />


    <script src="../Scripts/jquery-1.9.1.min.js" type="text/javascript"></script>
    <script src="~/Scripts/jquery-1.9.1.min.js" type="text/javascript"></script>
    <script src="/Scripts/jquery-1.9.1.min.js" type="text/javascript"></script>

</head>

当我查看html页面的来源时,它会添加如下引用

 <script src="../jquery-1.9.1.min.js" type="text/javascript"></script>
 <script src="core.min.js" type="text/javascript"></script>
<script src="~/jquery-1.9.1.min.js" type="text/javascript"></script>

但这些都不起作用。

我甚至将.js文件放在主题(全局文件夹)中,即使这样也无效。

干杯

5 个答案:

答案 0 :(得分:2)

<%@ Register Assembly="Telerik.Sitefinity" Namespace="Telerik.Sitefinity.Web.UI" TagPrefix="sf" %> <sf:ResourceLinks ID="resourcesLinks" runat="server"> 
<sf:ResourceFile JavaScript Library="JQuery" /> 
 <sf:ResourceFile Name="~/Widgets/myJavascript.js" />
</sf:ResourceLinks>

http://www.sitefinity.com/documentation/documentationarticles/define-the-resourcelinks-widget

http://www.sitefinity.com/blogs/gabe-sumners-blog/2011/09/01/how_to_use_jquery_and_other_javascript_libraries_in_sitefinity

答案 1 :(得分:2)

使用Sitefinity项目,我认为您需要遵循结构规则,下面是示例: Sitefinity Project Structure

更改结构后,您可以在主页面中加载Js或Css,如下所示: 例1:加载Js

<script src="/Sitefinity/WebSiteTemplates/SunwayTemplate/JS/modernizr-2.7.1.min.js"></script>

例2:加载Css

<link href="/Sitefinity/WebSiteTemplates/SunwayTemplate/App_Themes/SunwayTheme/Global/style.css" rel="stylesheet">

您可以在以下位置阅读有关Sitefinity结构的更多信息: http://docs.sitefinity.com/website-templates-file-structure

答案 2 :(得分:1)

我通常使用RadScriptManager。

<form id="aspnetForm" runat="server">
    <telerik:RadScriptManager ID="RadScriptManager1" CompositeScript-ScriptMode="Release" EnableScriptGlobalization="True" EnableScriptLocalization="False" runat="server" CompositeScript-NotifyScriptLoaded="True" LoadScriptsBeforeUI="True" OutputCompression="Forced" AjaxFrameworkMode="Disabled">
        <CompositeScript>
            <Scripts>
                <asp:ScriptReference Name="Telerik.Sitefinity.Resources.Scripts.MicrosoftAjax.js" Assembly="Telerik.Sitefinity.Resources" />
                <asp:ScriptReference Name="Telerik.Sitefinity.Resources.Scripts.MicrosoftAjaxWebForms.js" Assembly="Telerik.Sitefinity.Resources" />
                <asp:ScriptReference Name="WebForms.js" Assembly="System.Web" />
                <asp:ScriptReference Path="~/Scripts/Modernizr-2.6.2.min.js" />
                <asp:ScriptReference Name="Telerik.Sitefinity.Resources.Scripts.jquery-1.8.3.min.js" Assembly="Telerik.Sitefinity.Resources" />
                <asp:ScriptReference Name="Telerik.Sitefinity.Resources.Scripts.jquery-ui-1.9.2.custom.min.js" Assembly="Telerik.Sitefinity.Resources" />
                <asp:ScriptReference Path="~/Scripts/bootstrap.min.js" />
             </Scripts>
        </CompositeScript>
        <Scripts>
            <asp:ScriptReference Path="~/Scripts/project.js" />
        </Scripts>
    </telerik:RadScriptManager>

    ...

</form>

这会以正确的顺序加载所有内容,我可以轻松地将第三方库分别添加到mimimized文件和我自己的脚本中,以便于调试。

答案 3 :(得分:0)

我最近遇到了一个非常类似的问题。尽管正确地包含了js文件,但正在重新组织脚本文件的顺序。

我发现一种更可靠的方法来包含我的脚本是将代码隐藏文件添加到我的母版页并指定以下内容;

 protected void Page_Load(object sender, EventArgs e)
 {
 InitPageScripts();
 }

在我的InitPageScripts方法中,我有以下内容;

private void InitPageScripts()
{
//Get the reference for the RadScriptManager that is on the master page
var scriptManager = ScriptManager.GetCurrent(Page);
if (scriptManager == null) return;
PageManager.ConfigureScriptManager(Page, ScriptRef.JQuery);
scriptManager.Scripts.Add(new ScriptReference { Path = "~/js/myscript.js" });            
}

答案 4 :(得分:0)

我通常做的是将Master页面放在项目的根目录下,并且根目录下也有一个/ js文件夹。

所以在母版页中我只是引用/js/file.js,它总能正常工作。

从不打扰使用“默认”Sitefinity结构