2012-04-28 91 views
5

考慮以下情況:用戶控件和JavaScript和母版頁

沒有對所有的javascript的ContentPlaceHolder母版頁...

速度issuses這一部分是在頁面的底部。

我的用戶控件生成一些JavaScript,使利用在母版頁的JavaScript(jQuery庫)一些參考的

所以,如果我的用戶控件的母版頁的JavaScript渲染之前,它不會工作。

,這是我的問題:

我怎麼做我的.ascx文件裏面的一些JavaScript代碼塊被渲染到ASP:內容的JavaScript在.aspx頁面中

也許我所有的思維是worng?

謝謝!

+0

ascx中的javascript是否也需要母版頁? – Adil 2012-04-28 17:57:38

+0

不,只有頁面 – YardenST 2012-04-28 20:20:55

回答

3

看看這是否適合你:

哪裏在主頁的「底部」?如果您將它關閉服務器端表單控制內部和您的用戶控制使用ClientScript.RegisterStartupScript,它會(這將是後你的你的靜態腳本「閉幕<form/>標記之前」注入你控制的那個腳本呼叫)。

母版頁 - 上面關閉服務器端ASP.Net </form>

.... 
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js "></script> 
</form> 

內容頁(沒有什麼特別):

<%@ Register src= .... 

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server"> 
    <uc1:jscript_inject ID="jscript_inject1" runat="server" /> 
</asp:Content> 

用戶控制:

protected void Page_Load(object sender, EventArgs e) 
{ 
    Page.ClientScript.RegisterStartupScript(this.GetType(), "foo", @"alert('foo');", true); 

} 

這是如何呈現(HTML視圖如此在瀏覽器urce):

<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js "></script> 

<script type="text/javascript"> 
    //<![CDATA[ 
    alert('foo');//]]> 
</script> 
.... 
</form> 

如廣告,alert('foo');是 「預定義」 JQ CDN呼叫下面....

+1

如何才能從.ascx文件註冊啓動腳本?通過後面的代碼處理大腳本並不容易 – YardenST 2012-04-28 20:17:47

0

乾杯有用。 有趣的是,這適用於Page.ClientScript.RegisterStartupScript,但不適用於Page.ClientScript.RegisterClientScriptInclude,而是將'include'添加到表單的頂部。