2012-04-28 51 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'添加到表单的顶部。