如何让按钮在单击后直接执行click事件里面的代码,而不执行Page_Load中的代码

dytmlx123 2006-10-25 09:36:03
如题,注意是单击后,所以放到OnPreRender事件中不行,因为,放入OnPreRender中后,不只是单击按钮,就是不单击也会执行里面的代码。原因如下
我做了一个网页,比如首页有很多新闻的datalist还有一个登陆框,登陆框里面有个button是登陆用的,那么网页大概代码应该如下
private void Page_Load(object sender, System.EventArgs e)
{
//放入datalist的显示的代码,里面肯定包括了很多连接数据库等的代码
}

#region Web 窗体设计器生成的代码

private void Button1_Click(object sender, System.EventArgs e)//登陆按钮代码
{
if(成功)Response.Redirect("huiyuan.aspx");
if(失败)Response.Redirect("shiban.aspx");
//点击登陆按钮后执行登陆操作,如果成功跳转到另外一个会员页面,不成功跳转到失败页面
}


分析:当我们打开主页的时候,先执行Page_Load,用来显示首页新闻的内容,这是很必要的,之后如果输入了用户名密码,点击登陆按钮,那么肯定仍然先初始化,之后是先执行了Page_Load的代码,最后再执行Button1_Click的代码,按照代码所写,我们知道不管登陆能否成功,我们都要跳转到一个新的页面,也就是说,点击登陆后那么执行Page_Load的代码就变得没有意义了,这等于是它白白浪费了服务器资源,所以有什么办法让按钮在单击后先执行click事件呢?(放到OnPreRender事件中不行,OnPreRender事件无法判断是否点击了按钮,这会使得第一次打开页面就直接先三执行click事件,这样在用户名秘密都没有输入的时候肯定直接跳转到失败页面,而无法显示新闻内容了)
我相信我说的很明白了,望各位指教,谢谢!
...全文
336 11 打赏 收藏 举报
写回复
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ztwzztwx 2007-04-02
  • 打赏
  • 举报
回复
if(!this,Ispostback)
{
放入datalist的显示的代码,里面肯定包括了很多连接数据库等的代码

}
powerzy 2006-10-25
  • 打赏
  • 举报
回复
if (!IsPostBack){
//....
}
abina 2006-10-25
  • 打赏
  • 举报
回复
或者你用一个Session来记录
protected void Page_Load(object sender, EventArgs e)
{
//
if (!IsPostBack)
{
if (Session["cur"]!=null)
{
}
else
{
//放入datalist的显示的代码
Session["cur"]="yes"; //yes为任意值
}
}
}
abina 2006-10-25
  • 打赏
  • 举报
回复
没有什么办法阻止按钮在单击后先执行click事件的,除非有验证控件之类,
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//放入datalist的显示的代码,
}
}
philoo 2006-10-25
  • 打赏
  • 举报
回复
Ajax
aafshzj 2006-10-25
  • 打赏
  • 举报
回复
加IsPsotBack判断,否则总要执行的,因为page实例是每次请求页面(浏览器触发server端事件实际上也是一次页面访问)时重新创建的。
jiangbo1125 2006-10-25
  • 打赏
  • 举报
回复
不管什么情况,都应该这样写的.

if(!this.Ispostback)
{
放入datalist的显示的代码,里面肯定包括了很多连接数据库等的代码

}
lch1234 2006-10-25
  • 打赏
  • 举报
回复
刷新有用!不信你测试下!新闻系统我做多了!都是这样做的 ,要不你把显示新闻页面转为
html也行!
dytmlx123 2006-10-25
  • 打赏
  • 举报
回复
可是这样的话,我点击刷新也没有用了啊,我要的是就是点击按钮不执行,点击刷新的时候总要能更新新闻啊,因为这个网站每天有400多条新消息的。
lch1234 2006-10-25
  • 打赏
  • 举报
回复
if(!this,Ispostback)
{
放入datalist的显示的代码,里面肯定包括了很多连接数据库等的代码

}
tl0 2006-10-25
  • 打赏
  • 举报
回复
protected void Page_Load(object sender, EventArgs e){
if (!IsPostBack){
//....
}
}
相关推荐
发帖
.NET社区

6.1w+

社区成员

.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
帖子事件
创建了帖子
2006-10-25 09:36
社区公告

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

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