PageBase后台注册js,如何放到之后呢?

woodyy 2010-03-10 02:35:10
我自己写了个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页面周期,做了几个测试发现都不行。
高人帮忙~谢谢呀
...全文
263 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhujiazhi 2010-03-10
  • 打赏
  • 举报
回复
protected override void Render(HtmlTextWriter writer)
{

在这个里面进行添加的,就当作是字符串来处理的
}
阿非 2010-03-10
  • 打赏
  • 举报
回复
简单做法就是

使用 <%= %> 表达式 or <% %> 表达式 or Literal 控件

但不能动态添加,需要直接在页面写死 。 内容 是可以动态设置的

放的位置 就是你需要的位置 即可
aofengdaxia 2010-03-10
  • 打赏
  • 举报
回复
直接申明一个变量,
protect string js = "<script>....</script>"
然后在aspx中
</html>
<%=js%>
阿非 2010-03-10
  • 打赏
  • 举报
回复
string newContent = oldContent.Replace("</html>", "</html><script>alert("我在</html>后面");</script>");

=>


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

阿非 2010-03-10
  • 打赏
  • 举报
回复
RegisterStartupScript 的位置是在 </form> 前
阿非 2010-03-10
  • 打赏
  • 举报
回复

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);



}
koukoujiayi 2010-03-10
  • 打赏
  • 举报
回复
Page.ClientScript.RegisterStartupScript(this.GetType(), "_BaseClientScript", script);
kyoybs 2010-03-10
  • 打赏
  • 举报
回复
楼主这个要求真不太常见, 谢谢这个代码吧:

Literal lit = new Literal();
lit.Text = "<script...>";
this.Form.Controls.Add(lit);
tkscascor 2010-03-10
  • 打赏
  • 举报
回复
在. pageload事件使用this.RegisterStartupScript

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧