关于ASP。net 的 Response.Redirect 问题

zjs1109 2008-11-26 09:04:59
当我想要添加一段数据成功的时候,弹出添加数据成功,我就 Response.Write("<script>window.alert('新增数据成功!') </script>"); 然后我想只在GRidView里面显示新增的数据,我就把控件里面的值回传作为查询依据,结果,不弹出“新增数据成功了”
看代码
 SqlDataAdapter customersTableAdapter =
new SqlDataAdapter(SqlDataSource1.SelectCommand, SqlDataSource1.ConnectionString);
DataTable hiberarchyTable = new DataTable();
customersTableAdapter.Fill(hiberarchyTable);
SqlCommandBuilder sqlCommandBuilder = new SqlCommandBuilder(customersTableAdapter);
DataRow newRow = hiberarchyTable.NewRow();
newRow["guotuzhenghao"] = guotuzhenghao.Value;
newRow["zuoluo"] = zuoluo.Value;
newRow["shiyongzhe"] = shiyongzhe.Value;
newRow["dihao"] = dihao.Value;
newRow["tuhao"] = tuhao.Value;
newRow["yongtu"] = yongtu.Value;
newRow["dengji"] = dengji.Value;
newRow["churangStart"] = churangStart.Value;
newRow["charangend"] = charangend.Value;
newRow["churangnianxian"] = churangnianxian.Value;
newRow["beizhu"] = beizhu.Value;
newRow["fazhengjiguan"] = fazhengjiguan.Value;
newRow["fazhengriqi"] = fazhengriqi.Value;
newRow["gongtanmianji"] = gongtanmianji.Value;
newRow["shiyongquanmianji"] = shiyongquanmianji.Value;

// newRow["s2"] = "s2";
hiberarchyTable.Rows.Add(newRow);
customersTableAdapter.Update(hiberarchyTable);
}
catch (Exception we)
{
Response.Write("<script>window.alert('新增数据出错!') </script>");
return;
}

Response.Write("<script>window.alert('新增数据成功!') </script>");
Response.Redirect("manage_add_guotushiyong.aspx?guotuzhenghao=" + guotuzhenghao.Value + "&shiyongzhe=" + shiyongzhe.Value + "&zuoluo=" + zuoluo.Value + "");
...全文
217 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenjunsheep 2008-12-04
  • 打赏
  • 举报
回复
14楼说的很详细呀,受教了
loucc 2008-11-26
  • 打赏
  • 举报
回复
执行顺序,先是后台再到前台好不好,你这样直接跳转了
IndianGirl 2008-11-26
  • 打赏
  • 举报
回复
Response.Write("<script>window.alert('新增数据成功!') </script>");
Server.Transfer("manage_add_guotushiyong.aspx?guotuzhenghao=" + guotuzhenghao.Value + "&shiyongzhe=" + shiyongzhe.Value + "&zuoluo=" + zuoluo.Value + "");

这样是可以弹筐后在跳转的

Redirect 是重定向 注意看 跳转的时候 地址栏的路径都改变了 是重新请求的 所以不会弹筐

看看他们的区分和比较 就明白了
IndianGirl 2008-11-26
  • 打赏
  • 举报
回复
Asp.net中实现页面跳转的三种方法比较,现在总结如下:


1 Response.Redirect

这个跳转页面的方法跳转的速度不快,因为它要走2个来回(2次postback),但他可以跳 转到任何页面,没有站点页面限制(即可以由雅虎跳到新浪),同时不能跳过登录保护。但速度慢是其最大缺陷!Redirect跳转机制:首先是发送一个http请求到客户端,通知需要跳转到新页面,然后客户端在发送跳转请求到服务器端。需要注意的是跳转后内部空间保存的所有数据信息将会丢失,所以需要用到session。

2 Server.Transfer

速度快,只需要一次postback ,但是。。。。他必须是在同一个站点下,因为它是server的一个方法。另外,他能跳过登录保护。你可以写个小程序试试:设计一个由页面一到页面二的跳转,但要进入到页面二需要登录,form认证,但如果跳转语句使用transfer的话,那就不会弹出登录页面了。这个方法的重定向请求是发生在服务器端,所以浏览器的url地址仍然保留的是原页面的地址!

3 Sever.Execute

这种页面导航方式类似于针对ASPX页面的一次函数调用,被调用的页面能够访问发出调用页面的表单数据和查询字符串集合,所以要把被调用页面Page指令的EnableViewStateMac属性设置成False。默认情况下,被调用页面的输出追加到当前应答流。但是,Server.Execute方法有一个重载的方法,允许通过一个TextWriter对象(或者它的子对象,例如StringWriter对象)获取被调用页面的输出,而不是直接追加到输出流,这样,在原始页面中可以方便地调整被调用页面输出结果的位置。
zjs1109 2008-11-26
  • 打赏
  • 举报
回复
当我想要添加一段数据成功的时候,弹出添加数据成功,我就 Response.Write(" <script>window.alert('新增数据成功!') </script>"); 然后我想只在GRidView里面显示新增的数据,我就把控件里面的值回传作为查询依据,结果,不弹出“新增数据成功了”
zjs1109 2008-11-26
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jiang_jiajia10 的回复:]
C# code
Response.Write(" <script>window.alert('新增数据成功!');window.location='"+loation+"'; </script>");
[/Quote]

这个是不行的
jiang_jiajia10 2008-11-26
  • 打赏
  • 举报
回复

Response.Write(" <script>window.alert('新增数据成功!');window.location='"+loation+"'; </script>");
yuziyuedemsdn 2008-11-26
  • 打赏
  • 举报
回复
学习
wugaochao 2008-11-26
  • 打赏
  • 举报
回复
学习
zjybushiren88888 2008-11-26
  • 打赏
  • 举报
回复

Response.Write(" <script>window.alert('新增数据成功!');window.location='"+loation+"'; </script>");
APPLESUCH5 2008-11-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 chinaicm 的回复:]
把弹出提示信息和跳转页都写在JS脚本里.用JS来实现跳转页.
[/Quote]
这个才是正解
yoursWTR 2008-11-26
  • 打赏
  • 举报
回复
Response.Write() 这个向页面输出而已

<script>window.alert('新增数据成功!') </script>
要到浏览器里才能解析

Response.Redirect
你在服务器端就让其导向了发到浏览器里的当然是manage_add_guotushiyong.aspx这个页面

human_2 2008-11-26
  • 打赏
  • 举报
回复
Response.Write("<script>window.alert('新增数据成功!') </script>");
Response.Redirect("

Response.Redirect 调用之前不能有输出如Response.Write(


孤独侠客123 2008-11-26
  • 打赏
  • 举报
回复
这样不会弹出的.因为Response.Write是在当前的页面输出.但是下面你已经跳转到其它页面了,当然也就看不到弹出的信息了.
string loation = "manage_add_guotushiyong.aspx?guotuzhenghao=" + guotuzhenghao.Value + "&shiyongzhe=" + shiyongzhe.Value + "&zuoluo=" + zuoluo.Value + "";

Response.Write("<script>window.alert('新增数据成功!');window.location='"+loation+"';</script>");
这样就行了.


chinaicm 2008-11-26
  • 打赏
  • 举报
回复
把弹出提示信息和跳转页都写在JS脚本里.用JS来实现跳转页.
chenjunsheep 2008-11-26
  • 打赏
  • 举报
回复
有什么问题?
pcb_ghl 2008-11-26
  • 打赏
  • 举报
回复
建议你用存储过程来插入数据,并获得存储过程的返回值.
然后在程序中判断这个返回值大于0,弹出成功,否则弹出出错.

62,269

社区成员

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

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

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

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