我看到已经有一些很好的建议和方法建议如何获得回发控制。但是,我发现了另一个网页(Mahesh博客),该网页具有一种检索回发控件ID的方法。
我将在此处进行一些修改,包括使其成为扩展类。希望它以这种方式更有用。
/// <summary>/// Gets the ID of the post back control./// /// See: http://geekswithblogs.net/mahesh/archive/2006/06/27/83264.aspx/// </summary>/// <param name = "page">The page.</param>/// <returns></returns>public static string GetPostBackControlId(this Page page){ if (!page.IsPostBack) return string.Empty; Control control = null; // first we will check the "__EVENTTARGET" because if post back made by the controls // which used "_doPostBack" function also available in Request.Form collection. string controlName = page.Request.Params["__EVENTTARGET"]; if (!String.IsNullOrEmpty(controlName)) { control = page.FindControl(controlName); } else { // if __EVENTTARGET is null, the control is a button type and we need to // iterate over the form collection to find it // ReSharper disable TooWideLocalVariableScope string controlId; Control foundControl; // ReSharper restore TooWideLocalVariableScope foreach (string ctl in page.Request.Form) { // handle ImageButton they having an additional "quasi-property" // in their Id which identifies mouse x and y coordinates if (ctl.EndsWith(".x") || ctl.EndsWith(".y")) { controlId = ctl.Substring(0, ctl.Length - 2); foundControl = page.FindControl(controlId); } else { foundControl = page.FindControl(ctl); } if (!(foundControl is IButtonControl)) continue; control = foundControl; break; } } return control == null ? String.Empty : control.ID;}更新(2016-07-22): 键入check for
Button并
ImageButton更改为寻找
IButtonControl以识别来自第三方控件的回发。



