0

复制问题的步骤

首先,在文本框中输入文本,但不要输入回车。然后,在列表框中选择不同的索引。最后,查看 ID(列表框和文本框)都将显示在事件目标中。

预期结果 只有一个 ID 会出现在 eventtarget 上,这是初始化它的 ID = listbox onselected index change。

这是代码:

<TextBox ID="TextBox1" runat="server" AutoPostBack="True"></asp:TextBox> <ListBox ID="ListBox1" runat="server" AutoPostBack="True" onselectedindexchanged="ListBox1_SelectedIndexChanged"> <asp:ListItem Text="0" Value="0"></asp:ListItem> <asp:ListItem Text="1" Value="1"></asp:ListItem> <asp:ListItem Text="2" Value="2"></asp:ListItem> </ListBox> protected void Page_Load(object sender, EventArgs e){ if (IsPostBack) { string target = Request["__EVENTTARGET"] as string; System.Windows.Forms.MessageBox.Show("__EVENTTARGET: " + target); } } protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e) { }
4

1 回答 1

0

如果您的文本框的AutoPostBack属性设置为true,则文本框在失去焦点时将导致回发。这是设计使然。请参阅文档

因此,您获得文本框的 ID 实际上是预期的行为。如果您不希望这样,请考虑不将文本框AutoPostBack属性设置为true.

于 2013-08-28T17:55:48.647 回答