PostBack与AutoPostBack的功能解释

   我们在程序里面,经常会看到if(!IsPostBack){}这样的句子,那么,PostBack是起到什么作用呢?

PostBack的意思是回发,我们可以把他理解成第二次执行该程序。如果你还不是很理解的话,看看下面的例子:

1.我们向页面中添加一个dropdownlist,一个textbox,一个button控件,在.CS里写如下代码

protected void Page_Load(object sender,
EventArgs e)

{
this.DropDownList1.Items.Add("aaaaa");
this.DropDownList1.Items.Add("bbbbb");
}
protected void Button1_Click(object sender, EventArgs e)
{
this.DropDownList1.Items.Add(this.TextBox1.Text);
}

运行程序,在textbox中输入ccccc第一次点button,dropdownlist中会添加text中的文本,那么,如果你第二次
button,你猜你会得到什么结果?是的,出现了两次的aaaaa,bbbbb,aaaaa,bbbbb,ccccc。所以,通常我们就用
PostBack来处理这个问题。

2.protected void Page_Load(object sender,
EventArgs e)

{
if (!IsPostBack)
{
this.DropDownList1.Items.Add("aaaaa");
this.DropDownList1.Items.Add("bbbbb");
}
}
protected void
Button1_Click(object sender, EventArgs e)

{
this.DropDownList1.Items.Add(this.TextBox1.Text);
}

运行,Oh
Yeah,是不是可以咯,咯咯,明白了postBack的用处了把。

那么,什么是AutoPostBack呢?AutoPostBack是一种机制(自动根据Web控件的一些事件,将页面自动发回服务器。在一些Web控件中,称为auto post
back属性。如果设置为true ,当此控件的某事件发生时,将发送一个request到服务器。

例如:
DropDdownList(Combo box)控件的属性AutoPostBack。如果我们将其设置为true
,当用户在组合框中选择不同的值时,被触发的事件将发送一个request给服务器。

为什么我们需要发送请求到服务器?
在此情况下的网页一般是用来输入用户信息的。该网页包含两个组合框控件:国家和城市。当用户选择某国,适当的城市应该显示到另一组合框,当然这一般是从数据库加载。为实现这一要求,我们可以设置国家组合框的
AutoPostBack属性为true
。如果我们这样做,当国家组合框触发了事件,那么将有一request发送给服务器,而此时,可执行一次,我们预先写好的根据国家值从数据库读取适当的城市值。



根据上面的理解,我的理解是,AutoPostBack是用在一个控件中的值变换会带来另一个控件值变换时,需要设置为true,它的AutoPostBack属性默认为False,如果不把属性改为
True,他的SelectedIndexChanged()事件中的代码就不会执行(SelectedIndexChanged()是选控件中的项所触发的事件)。
不过话说回来,频繁的回到服务器是一种非常不好的用户体验,所以现在又使用ajax,,呵呵。

你可能感兴趣的:(post)