用户控件以及JavaScript和母版页

时间:2012-04-28 17:23:33

标签: asp.net

考虑以下情况:

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

对于速度发布,此部分位于页面底部。

我的用户控件生成一些javascript,它们使用主页面中的一些引用javascript(Jquery库)

所以,如果我的用户控件在主页面javascript之前呈现,它将无效。

这是我的问题:

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

或者我的所有思考都可能是什么?

谢谢!

2 个答案:

答案 0 :(得分: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呼叫....

答案 1 :(得分:0)

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