我自己写了个PageBase类,其他的asp.net页面都继承这个。public class PageBase : System.Web.UI.Page
{
    protected override void OnInit(EventArgs e)
    {
        base.PreLoad += new EventHandler(this.PagePreLoad);
        // 这里还有其他代码,省略了。例如判断登录状态等代码
    }
    private void PagePreLoad(object sender, EventArgs e)
    {
        this.RegisterClientScript();
    }
    //向前台注册引用js和css
    private void RegisterClientScript()
    {
        string script = "<script src='/js/main.js' type='text/javascript'></script>";        if (!ClientScript.IsClientScriptBlockRegistered("BaseScript"))
        {
            ClientScript.RegisterClientScriptBlock(this.GetType(), "_BaseClientScript", script);
        }
    }
}
这样生成的页面,那个<script src='/js/main.js' type='text/javascript'></script>,位置会在<body >
    <form name="form1" method="post" action="Default.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/EPDwUKLTI1NjMw……" />
</div>
<!-- js的位置会在这里。我现在不想放这里了 -->
<script src='/js/main.js' type='text/javascript'></script>
……
————————————————————————————————————————————————————
我现在想注册js的时候,放在
</body>的前边,最好。
或者放在</html>的后边也可以。怎么做呢?查阅了下asp.net页面周期,做了几个测试发现都不行。
高人帮忙~谢谢呀

解决方案 »

  1.   

    在. pageload事件使用this.RegisterStartupScript
      

  2.   

    楼主这个要求真不太常见, 谢谢这个代码吧:        Literal lit = new Literal();
            lit.Text = "<script...>";
            this.Form.Controls.Add(lit);
      

  3.   

    Page.ClientScript.RegisterStartupScript(this.GetType(), "_BaseClientScript", script);
      

  4.   

    帮ding
    帮ding帮ding
    帮ding帮din帮dingg
      

  5.   


     protected override void Render(HtmlTextWriter writer)
        {                StringWriter stringWriter = new StringWriter();
            HtmlTextWriter oldwriter = new HtmlTextWriter(stringWriter);        base.Render(oldwriter);        string oldContent = stringWriter.ToString();        string newContent = oldContent.Replace("</html>", "</html><script>alert("我在</html>后面");</script>");        writer.Write(newContent);            }
      

  6.   

    RegisterStartupScript 的位置是在 </form> 前
      

  7.   

    string newContent = oldContent.Replace("</html>", "</html><script>alert("我在</html>后面");</script>");=>
    string newContent = oldContent.Replace("</html>", "</html><script>alert('我在</html>后面');</script>");
      

  8.   

    直接申明一个变量,
     protect string js = "<script>....</script>"
    然后在aspx中
    </html>
    <%=js%>
      

  9.   

    简单做法就是使用 <%= %> 表达式 or  <% %> 表达式 or Literal 控件但不能动态添加,需要直接在页面写死 。 内容 是可以动态设置的放的位置  就是你需要的位置 即可
      

  10.   

    protected override void Render(HtmlTextWriter writer)
        {  在这个里面进行添加的,就当作是字符串来处理的
    }