5

考虑以下情况:

有一个包含所有 javascript 的 contentPlaceHolder 的母版页...

对于速度问题,此部分位于页面底部。

我的用户控件生成一些 javascript,这些 javascript 使用母版页 javascript(Jquery 库)中的一些引用

因此,如果我的用户控件在母版页 javascript 之前呈现,它将不起作用。

这是我的问题:

如何在我的 .ascx 文件中制作一些 javascript 代码块以呈现到 .aspx 页面中的 asp:Content JavaScript

或者也许我的所有想法都已磨损?

谢谢!

4

2 回答 2

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 视图源):

<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 调用....

于 2012-04-28T18:10:41.823 回答
0

干杯有用。有趣的是,这适用于Page.ClientScript.RegisterStartupScript但不适用Page.ClientScript.RegisterClientScriptInclude,而是将“包含”添加到表单的顶部。

于 2012-12-03T17:23:22.140 回答