this.ClientScript.RegisterStartupScript没有作用,什么会导致这个代码无效呢?

EverythingIsNull 2009-04-21 11:19:36
/// <summary>
/// 弹出警告
/// </summary>
/// <param name="msg"></param>
protected void Alert(string msg)
{
this.ClientScript.RegisterStartupScript(this.GetType(), "message", "<script language='javascript' defer>alert('" + msg + "');</script>");
}

以前用都挺好
我某个页面里用这个突然没有用了
什么会导致这段代码无效呢?
怎么解决这个问题?
我想做个弹出警告框而已
...全文
2547 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
Benzema0909 2012-09-19
  • 打赏
  • 举报
回复
把你页面的form标签 加上 runat="server"
ziliubin 2012-04-01
  • 打赏
  • 举报
回复
脚本注入是随机位置的,所以你在这个页面上的脚本执行可能后于跳转页面,所以没有执行到
reciment 2011-05-20
  • 打赏
  • 举报
回复
ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "", "alert('!');", true);
是不是非得加UpdataPanel
元元0123 2010-11-19
  • 打赏
  • 举报
回复
同样问题啊
wujinjian2008n 2009-04-23
  • 打赏
  • 举报
回复
ClientScript.RegisterStartupScript(this.GetType(), "", " <script>alert('dfdfd'); </script>");
Response.Redirect(url);

这样写是不行的。对话框弹出来的,直接跳转页面了。
wujinjian2008n 2009-04-23
  • 打赏
  • 举报
回复
用alert('111');window.location.replace("url");
EverythingIsNull 2009-04-23
  • 打赏
  • 举报
回复
有跳转就不行?
跳转是放在这句话之后啊
用alert('111');window.location=...;
依然不行
我试了的
浪漫幕末 2009-04-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 EverythingIsNull 的回复:]
貌似去掉后面的Response.Redirect("Default.aspx")就好了
可是我以前这样写都是好的啊
奇怪了
[/Quote]
有跳转的话,肯定不执行那js代码了。页面都重定向到别的页面了,怎么能运行之前页面的js。用alert('111');window.location=...;就可以了。

顺便提一下,你那个可以写简化一点:
ClientScript.RegisterStartupScript(this.GetType(), "message", "alert('" + msg + "');",true);
wujinjian2008n 2009-04-23
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 wujinjian2008n 的回复:]
ScriptManager.RegisterStartupScript(this.GetType(), "", " <script>alert('dfdfd'); </script>");
[/Quote]
写错了

ClientScript.RegisterStartupScript(this.GetType(), "", " <script>alert('dfdfd'); </script>");
编程有钱人了 2009-04-23
  • 打赏
  • 举报
回复
这么调用使用不用我教你了吧

using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Web.UI;

/// <summary>
/// 一些常用的Js调用
/// 添加新版说明:由于旧版普遍采用Response.Write(string msg)的方式输出js脚本,这种
/// 方式输出的js脚本会在html元素的<html></html>标签之外,破坏了整个xhtml的结构,
/// 而新版本则采用ClientScript.RegisterStartupScript(string msg)的方式输出,不会改变xhtml的结构,
/// 不会影响执行效果。
/// 为了向下兼容,所以新版本采用了重载的方式,新版本中要求一个System.Web.UI.Page类的实例。
/// 创建时间:2006-9-13
/// 创建者:马先光
/// 新版作者:周公
/// 修改日期:2007-4-17
/// 修改版发布网址:http://blog.csdn.net/zhoufoxcn
/// </summary>
public class JScript
{
#region 新版本
/// <summary>
/// 弹出JavaScript小窗口
/// </summary>
/// <param name="js">窗口信息</param>
public static void Alert(string message, Page page)
{
#region
string js = @"<Script language='JavaScript'>
alert('" + message + "');</Script>";
//HttpContext.Current.Response.Write(js);
if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), "alert"))
{
page.ClientScript.RegisterStartupScript(page.GetType(), "alert", js);
}
#endregion
}

/// <summary>
/// 弹出消息框并且转向到新的URL
/// </summary>
/// <param name="message">消息内容</param>
/// <param name="toURL">连接地址</param>
public static void AlertAndRedirect(string message, string toURL, Page page)
{
#region
string js = "<script language=javascript>alert('{0}');window.location.replace('{1}')</script>";
//HttpContext.Current.Response.Write(string.Format(js, message, toURL));
if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), "AlertAndRedirect"))
{
page.ClientScript.RegisterStartupScript(page.GetType(), "AlertAndRedirect", string.Format(js, message, toURL));
}
#endregion
}

/// <summary>
/// 回到历史页面
/// </summary>
/// <param name="value">-1/1</param>
public static void GoHistory(int value, Page page)
{
#region
string js = @"<Script language='JavaScript'>
history.go({0});
</Script>";
//HttpContext.Current.Response.Write(string.Format(js, value));
if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), "GoHistory"))
{
page.ClientScript.RegisterStartupScript(page.GetType(), "GoHistory", string.Format(js, value));
}
#endregion
}

// /// <summary>
// /// 关闭当前窗口
// /// </summary>
// public static void CloseWindow()
// {
// #region
// string js = @"<Script language='JavaScript'>
// parent.opener=null;window.close();
// </Script>";
// HttpContext.Current.Response.Write(js);
// HttpContext.Current.Response.End();
// #endregion
// }

/// <summary>
/// 刷新父窗口
/// </summary>
public static void RefreshParent(string url, Page page)
{
#region
string js = @"<Script language='JavaScript'>
window.opener.location.href='" + url + "';window.close();</Script>";
//HttpContext.Current.Response.Write(js);
if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), "RefreshParent"))
{
page.ClientScript.RegisterStartupScript(page.GetType(), "RefreshParent", js);
}
#endregion
}


/// <summary>
/// 刷新打开窗口
/// </summary>
public static void RefreshOpener(Page page)
{
#region
string js = @"<Script language='JavaScript'>
opener.location.reload();
</Script>";
//HttpContext.Current.Response.Write(js);
if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), "RefreshOpener"))
{
page.ClientScript.RegisterStartupScript(page.GetType(), "RefreshOpener", js);
}
#endregion
}


/// <summary>
/// 打开指定大小的新窗体
/// </summary>
/// <param name="url">地址</param>
/// <param name="width">宽</param>
/// <param name="heigth">高</param>
/// <param name="top">头位置</param>
/// <param name="left">左位置</param>
public static void OpenWebFormSize(string url, int width, int heigth, int top, int left, Page page)
{
#region
string js = @"<Script language='JavaScript'>window.open('" + url + @"','','height=" + heigth + ",width=" + width + ",top=" + top + ",left=" + left + ",location=no,menubar=no,resizable=yes,scrollbars=yes,status=yes,titlebar=no,toolbar=no,directories=no');</Script>";
//HttpContext.Current.Response.Write(js);
if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), "OpenWebFormSize"))
{
page.ClientScript.RegisterStartupScript(page.GetType(), "OpenWebFormSize", js);
}
#endregion
}


/// <summary>
/// 转向Url制定的页面
/// </summary>
/// <param name="url">连接地址</param>
public static void JavaScriptLocationHref(string url, Page page)
{
#region
string js = @"<Script language='JavaScript'>
window.location.replace('{0}');
</Script>";
js = string.Format(js, url);
//HttpContext.Current.Response.Write(js);
if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), "JavaScriptLocationHref"))
{
page.ClientScript.RegisterStartupScript(page.GetType(), "JavaScriptLocationHref", js);
}
#endregion
}

/// <summary>
/// 打开指定大小位置的模式对话框
/// </summary>
/// <param name="webFormUrl">连接地址</param>
/// <param name="width">宽</param>
/// <param name="height">高</param>
/// <param name="top">距离上位置</param>
/// <param name="left">距离左位置</param>
public static void ShowModalDialogWindow(string webFormUrl, int width, int height, int top, int left, Page page)
{
#region
string features = "dialogWidth:" + width.ToString() + "px"
+ ";dialogHeight:" + height.ToString() + "px"
+ ";dialogLeft:" + left.ToString() + "px"
+ ";dialogTop:" + top.ToString() + "px"
+ ";center:yes;help=no;resizable:no;status:no;scroll=yes";
ShowModalDialogWindow(webFormUrl, features, page);
#endregion
}
/// <summary>
/// 弹出模态窗口
/// </summary>
/// <param name="webFormUrl"></param>
/// <param name="features"></param>
public static void ShowModalDialogWindow(string webFormUrl, string features, Page page)
{
string js = ShowModalDialogJavascript(webFormUrl, features);
//HttpContext.Current.Response.Write(js);
if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), "ShowModalDialogWindow"))
{
page.ClientScript.RegisterStartupScript(page.GetType(), "ShowModalDialogWindow", js);
}
}
/// <summary>
/// 弹出模态窗口
/// </summary>
/// <param name="webFormUrl"></param>
/// <param name="features"></param>
/// <returns></returns>
public static string ShowModalDialogJavascript(string webFormUrl, string features)
{
#region
string js = @"<script language=javascript>
showModalDialog('" + webFormUrl + "','','" + features + "');</script>";
return js;
#endregion
}
#endregion
}
wujinjian2008n 2009-04-23
  • 打赏
  • 举报
回复
ScriptManager.RegisterStartupScript(this.GetType(), "", "<script>alert('dfdfd');</script>");
EverythingIsNull 2009-04-23
  • 打赏
  • 举报
回复
在顶
问题依然没有解决
EverythingIsNull 2009-04-22
  • 打赏
  • 举报
回复
楼上的
我没用UpdatePanel
我是自己写的AJAX的代码
我找到问题了
调用Alert这个方法的时候
下面有一句Response.Write()
去掉就好了,可以弹出了
但是为什么呢?
以前是好的啊
现在弹出筐是有了,但页面跳转都做不了了
EverythingIsNull 2009-04-22
  • 打赏
  • 举报
回复
自己顶
依然不知道是怎么回事
EverythingIsNull 2009-04-21
  • 打赏
  • 举报
回复
貌似去掉后面的Response.Redirect("Default.aspx")就好了
可是我以前这样写都是好的啊
奇怪了
EverythingIsNull 2009-04-21
  • 打赏
  • 举报
回复
调试了
进了这个方法
但是就是没有弹出筐
这个页面我就是加了一些AJAX的代码啊
难道是这个引起的?
SK_Aqi 2009-04-21
  • 打赏
  • 举报
回复
那肯定没有加载进来了,应该没有执行到这里
你不仿调试下看看
EverythingIsNull 2009-04-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zsuswy 的回复:]
在你的浏览页面里面,查看一下源代码(View Source),看HTML页面里面有没有
<script language='javascript' defer>alert('msg'); </script>
这段脚本,然后再定位问题出在哪里。
[/Quote]

浏览页面里面根本找不到这段代码。。
求解
zsuswy 2009-04-21
  • 打赏
  • 举报
回复
在你的浏览页面里面,查看一下源代码(View Source),看HTML页面里面有没有
<script language='javascript' defer>alert('msg'); </script>
这段脚本,然后再定位问题出在哪里。
沉序员 2009-04-21
  • 打赏
  • 举报
回复
ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "", "alert('!');", true);

這個是對的。我試過了。一定可以的。出非系統壞了
加载更多回复(4)

62,046

社区成员

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

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

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

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