0

我有两个分配给它们的 Click 事件的图像按钮。每个事件都有代码。当它们被点击时,它会在运行点击事件中的代码之前运行页面加载功能。我怎样才能让它首先在点击事件中运行代码?

节日快乐!

图像按钮。

  protected void Page_Load(object sender, EventArgs e)
    {
        //YesID = "1";
        if (!IsPostBack)
        {

            Session["FirstyesID"] = 0;
            Session["FirstnoID"] = 0;
            Session["SecondnoId"] = 0;
            Session["SecondyesId"] = 0;
            Session["yesID"] = 0;
            Session["noId"] = 0;
        }
        else
        {
            //Run this code
        }
 }
         protected void FirstPicLink_Click(object sender, ImageClickEventArgs e)
    {
        Session["yesID"] = Session["FirstyesID"];
        Session["noId"] = Session["FirstnoID"];
        //FirstPicLink.PostBackUrl = "default.aspx";
        //FirstPicLink.PostBackUrl = "GadgetFS.aspx?yesId=" + firstYesPicId + "&noId=" + firstNoPicId;

    }

    protected void SecondPicLink_Click(object sender, ImageClickEventArgs e)
    {
        Session["yesID"] = Session["SecondyesId"];
        Session["noId"] = Session["SecondnoId"];
        //SecondPicLink.PostBackUrl = "default.aspx";
        //SecondPicLink.PostBackUrl = "GadgetFS.aspx?yesId=" + secondYesPicId + "&noId=" + secondNoPicId;
    }
4

1 回答 1

2

你问的是非法的。在 ASP.NET 中有一个执行顺序

如您所见,“回发事件处理”发生在“加载”之后并试图欺骗这一点,之后会让您头疼。这是一个非常糟糕的做法,这是来自一直走这条路的人。您不想弄乱页面生命周期。

查看您的代码,我建议您将// Run this code行中的任何内容放入一个方法中,然后从 Click 处理程序中调用该方法,而不是从else块中调用该方法。无论如何,您应该始终牢记页面生命周期,并据此修改您的代码逻辑。

于 2011-12-26T00:20:15.753 回答