假设我有一个简单的表单,只有两个文本框和一个按钮。文本框的AutoPostBack
设置为false。假设将一些代码放在那些写入响应流的TextChanged
事件中,说明在单击一个按钮并将表单提交给Web服务器后触发了哪个TextChanged事件。有没有办法控制缓存事件的触发顺序?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace IsPostBack___Part_8
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
Response.Write("Text box 1 event fire");
}
protected void TextBox2_TextChanged(object sender, EventArgs e)
{
Response.Write("Text box 2 event fired");
}
//dummy button click handler here
}
}
使用该代码并且表单上没有任何其他内容,首先更改哪个文本框无关紧要,它们以相同的顺序触发。缓存事件的触发顺序是由它在html中的位置决定的吗?
答案 0 :(得分:2)
根据Microsoft的说法,您不应该依赖特定的事件顺序。但一般情况下,事件将按照页面标记内的控件位置顺序触发。
所以如果您的布局是
[TextBox1]
[TextBox2]
[Button1]
事件将按顺序触发:
Page_Load
TextBox1_Changed
TextBox2_Changed
Button1_Click
您可以尝试通过重新排列页面上的控件来更改事件的顺序。