1"/>

关于c#:如何识别Page_Load中的回发事件

关于c#:如何识别Page_Load中的回发事件

How to Identify Postback event in Page_Load

我们有一些旧代码,需要在Page_Load中标识导致回发的事件。
目前,这是通过检查请求数据来实现的,例如...

如果(Request.Form [" __ EVENTTARGET"]!= null


这应该使您获得导致回发的控件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public static Control GetPostBackControl(Page page)
{
    Control control = null;

    string ctrlname = page.Request.Params.Get("__EVENTTARGET");
    if (ctrlname != null && ctrlname != string.Empty)
    {
        control = page.FindControl(ctrlname);
    }
    else
    {
        foreach (string ctl in page.Request.Form)
        {
            Control c = page.FindControl(ctl);
            if (c is System.Web.UI.WebControls.Button)
            {
                control = c;
                break;
            }
        }
    }
    return control;
}

在此页面上阅读有关此内容的更多信息:
http://ryanfarley.com/blog/archive/2005/03/11/1886.aspx


我只是发布整个代码(其中包括图像按钮/引起回发的其他控件检查)。谢谢Espo。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public Control GetPostBackControl(Page page)
{
   Control control = null;
   string ctrlname = page.Request.Params.Get("__EVENTTARGET");
   if ((ctrlname != null) & ctrlname != string.Empty)
      {
         control = page.FindControl(ctrlname);
       }
  else
      {
        foreach (string ctl in page.Request.Form)
           {
              Control c = page.FindControl(ctl);
              if (c is System.Web.UI.WebControls.Button)
                  { control = c; break; }
           }
       }
// handle the ImageButton postbacks
if (control == null)
{ for (int i = 0; i < page.Request.Form.Count; i++)
    {
        if ((page.Request.Form.Keys[i].EndsWith(".x")) || (page.Request.Form.Keys[i].EndsWith(".y")))
             { control = page.FindControl(page.Request.Form.Keys[i].Substring(0, page.Request.Form.Keys[i].Length - 2)); break;
             }
     }
 }
return control;
}


除了以上代码外,如果控件的类型为ImageButton,则添加以下代码,

1
2
3
4
5
6
7
8
if (control == null)
{ for (int i = 0; i < page.Request.Form.Count; i++)
    {
        if ((page.Request.Form.Keys[i].EndsWith(".x")) || (page.Request.Form.Keys[i].EndsWith(".y")))
             { control = page.FindControl(page.Request.Form.Keys[i].Substring(0, page.Request.Form.Keys[i].Length - 2)); break;
             }
     }
 }

推荐阅读