Page.ClientScript.RegisterStartupScript的奇怪问题

chenyu112 2009-04-12 08:57:59
程序的 Page.ClientScript.RegisterStartupScript 下面一行是页面地址转换的代码,如
Response.Write("<script>top.location.href='test.aspx';</script>");

如果把这行去掉,RegisterStartupScript 是执行的,如果把重新定向页面地址的这句加上,RegisterStartupScript就不执行了
各位遇到这个问题吗?为什么会出现这样的呢?怎么解决?
此部分完整的代码:
Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "<script>alert('TTt');</script>");
Response.Write("<script>top.location.href='test.aspx';</script>");
...全文
299 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ws_hgo 2009-04-12
  • 打赏
  • 举报
回复
问下
1,2两位老大

   <form name="form1" method="post" action="Default4(js).aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTYyNzcxNDY4NmRknvxAh8P+ahp0fMKzxGT6fvImbmg=" />
</div>

<script>alert('ClientScriptBlock:'+document.all.Hidden1.value)</script>
<div>
<input id="Hidden1" type="hidden" value="Hello" />

</div>

<script>alert('StartupScript:'+document.all.Hidden1.value)</script></form>

这个代码中
两段JS有什么不同
也就是说RegisterClientScriptBlock和RegisterStartupScript
ws_hgo 2009-04-12
  • 打赏
  • 举报
回复
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
ShowLiteral();
}
}
public void ShowLiteral()
{
// Literal1.Text += "<script>alert('Hello World');</script>";
Page.RegisterClientScriptBlock("", "<script>alert('ClientScriptBlock:'+document.all.Hidden1.value)</script>");
Page.RegisterStartupScript("", "<script>alert('StartupScript:'+document.all.Hidden1.value)</script>");
}



   <input id="Hidden1" type="hidden" value="Hello" />
<asp:Literal ID="Literal1" runat="server"></asp:Literal>

  • 打赏
  • 举报
回复
[Quote=引用 3 楼 beckfun 的回复:]
重定向既然用到了response,那为什么不用Response.Redirect("页面地址")
[/Quote]

因为他有

alert('TTt');

这个要求。
beckfun 2009-04-12
  • 打赏
  • 举报
回复
重定向既然用到了response,那为什么不用Response.Redirect("页面地址")
wuyq11 2009-04-12
  • 打赏
  • 举报
回复
Page.ClientScript.RegisterStartupScript(Page.GetType(), "", " <script>alert('TTt'); top.location.href='test.aspx';</script>");
Page.Response.Write("<script></script>");
生成的客户端js脚本在代码的最头上,也就是<HTML>上面。
参考
  • 打赏
  • 举报
回复
此部分完整的代码:
Page.ClientScript.RegisterStartupScript(Page.GetType(), "显示TTt", " <script>alert('TTt'); </script>");
Page.ClientScript.RegisterStartupScript(Page.GetType(), "重定向", " <script>top.location.href='test.aspx'; </script>");

学习asp.net要以html技术为基础。你琢磨一下,Response.Write这个语句是怎么样地破坏 html 代码的?!
chenyu112 2009-04-12
  • 打赏
  • 举报
回复
楼上的可以参考一下 这个 http://dotnet.aspx.cc/article/3d5c9bed-5f15-4116-c3fe-662de4b48864/read.aspx

结贴

62,046

社区成员

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

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

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

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