2013-01-15 63 views
3

在正文標籤末尾之前是否有註冊腳本引用的方法?我剛剛嘗試過:在正文標籤末尾註冊腳本引用標籤

page.ClientScript.RegisterClientScriptInclude("jquery.widgets.js", page.ResolveClientUrl("~/js/plugins/jquery.widgets.js")); 

但它在文本元素的開始位置註冊了ViewState之後的文件。

+0

你們是不是要動態地做到這一點,或只是找到在ASP頁面的底部添加腳本和腳本引用的最佳途徑。淨? – pwdst

+0

在ASP.NET頁面底部添加腳本和腳本引用的最佳方法 – dragonfly

回答

9

使用腳本經理在Page_Load動態註冊腳本使用LoadScriptsBeforeUI="False"屬性,以確保腳本在文檔的最後註冊。

<body> 
<form id="form1" runat="server"> 
    Some content here 
    <asp:ScriptManager runat="server" ID="smScriptManager" LoadScriptsBeforeUI="False"> 
     <Scripts> 

     </Scripts> 
    </asp:ScriptManager> 
</form> 

然後在你的代碼

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load 
    smScriptManager.Scripts.Add(New ScriptReference("~/Include/Site.js")) 
End Sub 
+0

這是正確的方法。 – niaher

5

我要做的就是在母版的底部創建的ContentPlaceHolder(如果有的話) -

//Any scripts required on all pages, e.g. JQuery go before the content placeholder 

<asp:ContentPlaceHolder ID="ScriptContentPlaceHolder" runat="server"> 
</asp:ContentPlaceHolder> 
</body> 

在我隨後將享有以下權利─

<asp:Content ContentPlaceHolderID="ScriptContentPlaceHolder" ID="PageScriptContent" runat="server"> 
    //Load script with application relative path 
    <script src="<%= Page.ResolveURL("~/js/plugins/jquery.widgets.js") %>" type="text/javascript"></script> 

    //Load script with HTML relative path 
    <script src="/js/plugins/jquery.widgets.js" type="text/javascript"></script> 
</asp:Content> 

如果你做的個人頁面需要有條件地從代碼中添加一個腳本,您可以使用Controls.Add將新文字或HtmlGenericControl添加到ContentPlaceHolder。

HtmlGenericControl ScriptGenericControl = new HtmlGenericControl("script"); 
ScriptGenericControl.Attributes.Add("type", "text/javascript"); 
ScriptGenericControl.Attributes.Add("src", Page.ResolveURL("~/js/plugins/jquery.widgets.js")); 
PageScriptContent.Controls.Add(ScriptGenericControl); 

或 -

PageScriptContent.Controls.Add(new Literal(){ Text = string.Format("<script type='text/javascript' src='{0}'></script>", Page.ResolveURL("~/js/plugins/jquery.widgets.js")) };