Asp.Net 版块开张啦!先献上一篇初级教程热热手,嘿嘿!

ViewState和IsPostBack是什么,这里就不多作介绍了,我们今天讲是在什么情况下使用这两个好东东

在Asp.Net中,因为引入了ViewState,使程序能够在表单提交的时候,将表单元素,如TextBox/DropDownList中的值保留下来,这在用户注册程序时特别有用,比如用户输入了一个不合法的用户名,提交后程序判断不全法,页面仍然停留在原来的表单填写界面,如果是
Asp/Php 程序,之前填写的值就丢了,但 Asp.Net
而可以将之前填写的值保存下来,超方便地说……

默认情况下,ViewState
对于每个页面都是自动启动的,实际上是相当没有必要的,这会加重服务器上内存的耗用,所以还是建议在
web.config 中\节点中加一段\来全局禁用所有页面的 ViewState
,再在需要的页面中来开启。

以上两段很多网页中都有介绍,算是一点铺垫……

之前讲到 ViewState
用于维护表单状态,但朋友们在试的时候却发现,就算页面中禁用了ViewState,仍然可以保留表单元素的值,那ViewState有什么意义呢?

很多情况下,ViewState是和IsPostBack配合使用的,我们可能会遇到这样一种情况,就是注册表单中的下拉菜单选项可能是从数据库中动态加载的,比如国家/省份/城市,加载的事件是Page_Onload
,这样的话,只要重新访问页面时,下拉菜单中的数据就会复位,就无法达到保值的效果,这个时候
IsPostBack 就派上用场了。

IsPostBack
全称是Page.IsPostBack属性,它用于判断当前页面在访问时是否有一个Post行为,简单地说就是是否是一个被提交过的页面,他返回
true/false。

我们可以在动态绑定下拉菜单的代码的外部嵌入一个 if(IsPostBack)
来决定是否需要动态加载菜单项,这样一来,即能保值,也避免了页面提交时需要重新访问数据库来加载菜单项,一举两得,呵呵……

附上源码:

注意,请用记事本编辑后另存为 utf-8 格式保存,以免出现乱码问题

第一个文件:

lang="html"}
1
<%@ Page Language="C#" AutoEventWireup="true" EnableViewState="true" CodeFile="IsPostBack.aspx.cs" Inherits="lesson_IsPostBack" %>

第二个文件:

lang="java"}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class lesson_IsPostBack : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
int[] ary ={ 1, 2, 3, 4 }; //这里将数组作为数据源绑定,读者可自行修改为数据库调用
dl.DataSource = ary;
dl.DataBind();
}
else
{
Response.Write("页面提交时间 : " + DateTime.Now);
}
}
}

留言

2006-07-09
次访问