用asp.net做开发时,我在每个页面都有的Page_Load函数
 protected void Page_Load(object sender, EventArgs e)
        {
...........
}
有些页面上有按钮(button1),按钮的事件函数为
button1_onclick(object sender, EventArgs e){
....
}
在这种情况,他点击页面上的这个按钮,返回服务器会先执行Page_Load函数,再执行button1的单击事件,如何才能在Page_Load中控制不再运行button1的单击事件button1_onclick(object sender, EventArgs e)

解决方案 »

  1.   

    如何禁用?
    button1.Enabled = false;
    这样?
      

  2.   

            Button1.Click -= new EventHandler(Button1_Click);
      

  3.   

    if(!Ispostback)
    {
    ....
    }
      

  4.   

    在click事件头一句加个判断然后RETURN
    这样可以么?
      

  5.   

    直接禁用好了,加载事件中就想不在运行Button的点击事件,那你还要Button干什么呢,不解
      

  6.   

    5楼,不是我想要的效果
    我先说一下我的目的
    主要是验证用户的,我先写一好一个类,如
     public class AdminPage : System.Web.UI.Page
        {
     protected void Page_Load(object sender, EventArgs e)
            {
                    Uadmin admin = (Uadmin)Session["admin"];
                    if (admin == null)
                    {
               //如果为空,就不在去执行其它按钮所做的操作,
                    }               
            }

    然后就每一个页面都继承这个类,如有个页面addadmin.aspx,这个页面的类为
    class addadmin : AdminPage

    //这里做一些按钮的操作

    这样我就不用每个按钮的事件都验证用户是否登录了。
      

  7.   

    你这个做法挺奇怪的,一般是判断没登录就跳转到登录页面。
    如果你想实现像你说的这种的话,我建议自己继承Button然后重新做一个按钮。
      

  8.   

    是啊,会跳到登录页面,不过,他还是要运行按钮的点击事件,假如有个人,他先登陆了,然后去到一个增加订单的页面。这时他离开了,他几小时后回来,再点击增加订单的按钮,如果我不在这个按钮事件中判断是否登录状态,就会把数据写入数据库。但是如果要每个按钮都要写判断,那就很繁琐了。所以我就写个类,直接在Page_Load中判断,如果没登录的,就跳转,不去执行点击事件!
      

  9.   

    搞个页面级的变量,在pageload里面改变变量的状态
    在button的click里面判断状态来执行代码
      

  10.   

    弄明白什么意思了,我之前也遇到类似的问题,不过不是一个页面有很多按钮都有事件触发的情况。不知你的登录状态时保存在什么值里面的?Session?
      

  11.   

    如果楼主只是为了判断用户是否已经登陆的问题的话 最好是实现ihttpmodule接口
      

  12.   

    哈,多谢各位的帮忙,特别是15楼,tyzs2001的提醒,让我想起了重写。
    于是我就重写了Page类中的方法public void ProcessRequest(HttpContext context);
    我写的类:
     public class AdminPage : System.Web.UI.Page
    {
    //重写ProcessRequest廓清
     public override void ProcessRequest(HttpContext context)
            {
                if (Session["admin"] == null)
                {
                     Server.Execute("~/login.htm");
                    return;
                }
                base.ProcessRequest(context);
            }
    }
    这个问题终于解决 了,谢谢各位,大侠们的热心帮忙。