页面转向的小处见大问题
如果有以下几种很简单的需求,可是小需要中隐藏着大问题。 
给页面添加4个web按钮,点击4个按钮分别实现 
(1)打开一个摸态对话框 
(2)页面在客户端转向 
(3)页面转向并且进行一个服务器端操作比如Session["test"]=1; 
(4)页面转向并且输出一个客户端提示 
(1)return false的问题 
在PageLoad里面这么写 
Button1.Attributes.Add("onclick","window.showModalDialog('a.aspx');"); 
如果这样的话关闭摸态对话框页面还是会Postback,如果在Button1的服务器端事件中写了 
Response.Write("aa");可以看到确实输出内容了 
为什么return false就可以了呢?在以前的asp中我们一般不会用一个type=submit的按钮来执行一个单纯的js操作 
一般我们这么写:<input type="button" onclick="">而asp.net的web按钮都是type=submit的 
(2) 
同样的,在PageLoad里面这么写 
Button2.Attributes.Add("onclick","location.href='a.aspx'"); 
这样是不能转向的,一定要 
Button2.Attributes.Add("onclick","location.href='a.aspx';return false;"); 
(3) 
如果你这么写 
Button3.Attributes.Add("onclick","location.href='a.aspx';return false;"); 
页面不postback当然就不会执行服务器端click事件,所以就不能这么转向 
需要这么写: 
Session["test"]=1; 
Response.Redirect("a.aspx"); 
(4) 
可能你会想到这么写: 
Response.Redirect("a.aspx"); 
Response.Write("<script>alert('aa');</script>"); 
这样又不对了,Response.Redirect()会导致Response.End()所以js的alert是不会出现的, 
改成这么写: 
Response.Write("<script>alert('aa');location.href='a.aspx'</script>"); 
写此文的目的是说明: 
(1)要把握好什么时候用服务器端的转向和js的转向 
(2)要明确asp.net的机制,把握好使用return false; 
(3)不要脑子里只有服务器控件,html控件有的时候还是非常方便的,在有的时候我们仅仅需要点击按钮进行js操作(不需要服务器端的操作),这个时候与其用web按钮再为之添加js代码还不如直接用html按钮 

 我的故事
 我的故事
 栏目导航
栏目导航 全部文章
全部文章 随笔杂谈
随笔杂谈 最新评论
 最新评论 
							 统计信息
 统计信息
			 日记搜索
 日记搜索
			 其他信息
 其他信息
			


 
   
   



 
			 
				 
					
