ASP.NET中的AutoPostBack和IsPostBack以及EnableViewState三者的运用以及区别

相信大家都在开始学ASP.NET的时候都会被它里面的几个属性搞得晕头转向,本文向各位学者介绍AutoPostBack和IsPostBack以及EnableViewState三者的运用以及区别,话不多说,让咱们来看例子来说明问题

1.IsPostBack

新建一个网站,在页面放置一个DropDownList和一个按钮,我希望点击按钮之后添加往DropDownList之中添加一条内容

//Default.aspx.cs

protected void Page_Load(object sender, EventArgs e)
    {
        DropDownList1.Items.Add("111111");
        DropDownList1.Items.Add("222222");
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        DropDownList1.Items.Add("这是按钮添加的一条");
    }

运行效果:

很明显,这不是我们想要的结果,原因是页面在每一次刷新时都会运行Page_Load函数,页面初次加载时运行一次,点击按钮时又加载一次,导致上面的结果,如何解决?

protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack == false)
        {
            DropDownList1.Items.Add("111111");
            DropDownList1.Items.Add("222222");
        }
    }


  运行正确,通过调试我们可以发现第二次并没有运行if里面的内容,说明除了第一次IsPostBack属性为false时,以后IsPostBack属性都为true,相信大家都理解了吧,哈哈哈哈偷笑

2. AutoPostBack
  还是以上面的例子来说明,双击DropDownList,添加事件如下:
  protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
            DropDownList1.Items.Add("这是当选中DropDownList时添加的一项");
    }
   我希望当选中DropDownList时里面应该添加一项,但是我们发现没有添加,我们调试一下:

发现程序并没有运行到这儿,DropDownList没有添加一项也就不足为奇了,怎么解决?其实很简单,把DropDownList的AutoPostBack属性勾上就好了

再次运行就是我们想要的结果,哈哈哈哈,是不是很简单,掌握了木有,掌握了之后,最后让我们来看看
EnableViewState这个属性吧...
3.EnableViewState
  新建一页面,同理在页面中放一个DropDownList(把DropDownList的EnableViewState属性改为false)和一个Button,在Button_Click函数里面添加代码如下:
   protected void Button1_Click(object sender, EventArgs e)
    {
        DropDownList1.Items.Add("按钮添加一项");
    }
  我希望运行时点击Button会一直不断的添加,可实际情况如下:

无论点击多少次,都只有一项内容
这是因为把DropDownList的EnableViewState属性改为了false,把它改为true之后,再次运行就是我们想要的结果。。why????

是这样的,我们在浏览器页面中所填写的信息最终都会交给服务器处理,在客户端浏览器和服务器中间有一个_VIEWSTATE的一种机制,每次客户端向服务器发信息都要连同_VIEWSTATE里面保存的信息一起发给服务器,服务器接收到信息后然后处理。我们打开网页的"查看源"如下:


我们发现有个_VIEWSTATE这个东西,是隐藏的,当点击按钮之后再次查看这个,会发现valu的值变得长了,相信大家会猜到发生什么了吧,value里面保存了点击按钮之后给DropdownList添加的值,,换句话说,我们每次点击按钮时服务器都会从这个_VIEWSTATE里面接收客户端的信息,,,当把EnableViewState改为false时,每次刷新页面_VIEWSTATE没有保存客户端的信息,,恩,这样大家应该就会理解了吧,,哈哈哈,是不是很简单。。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值