C# 识别导致回发的控件

C# 识别导致回发的控件,c#,asp.net,C#,Asp.net,我有一个在下拉列表选择中回发的页面(使用AJAX更新面板)。根据下拉选择,页面上的其余UI将动态生成。动态UI在页面加载时绘制,用于在Submit按钮单击时获取值。我面临的问题是,在下拉更改时,似乎发生了两次回发,一次是绘制原始UI,另一次是绘制更改后的UI(从而造成不一致)。如何处理这个问题。有没有办法找出是哪个控件导致了回发,这样当由于选择更改/提交按钮单击而发生回发时,我可以重新绘制UI 编辑:遗漏了一个重要的问题。更新面板的触发器是下拉列表中的SelectionChanged事件。这会导

我有一个在下拉列表选择中回发的页面(使用AJAX更新面板)。根据下拉选择,页面上的其余UI将动态生成。动态UI在页面加载时绘制,用于在
Submit
按钮单击时获取值。我面临的问题是,在下拉更改时,似乎发生了两次回发,一次是绘制原始UI,另一次是绘制更改后的UI(从而造成不一致)。如何处理这个问题。有没有办法找出是哪个控件导致了回发,这样当由于选择更改/提交按钮单击而发生回发时,我可以重新绘制UI


编辑:遗漏了一个重要的问题。更新面板的触发器是下拉列表中的
SelectionChanged
事件。这会导致额外的回发

您可以检查回发,然后执行

if (IsPostBack)
{ 
  var targetID = Request.Form["__EVENTTARGET"];
}
编辑:您可以通过执行..来获得实际控制

if (targetID != null && targetID != string.Empty)
{
    var targetControl = this.Page.FindControl(targetID);
}

对控件使用单独的服务器事件处理程序。例如:

public void DropDown_Changed(Object sender, EventArgs e)
{
    // Drop down is changed. It's the source of post back.
}

public void Button_Click(Object sender, EventArgs e)
{
    // Button is the source of postback.
}

检查下拉框是否有AutoPostBack=“true”,因为这将导致下拉框即使没有单击submit按钮也会发回,因此如果单击submit按钮,它将发回两次

查找导致回发的控件的方法之一是检查
Request.Params.Get(“\uu EVENTTARGET”)