1、视图状态
Web 应用程序是无状态的。每次从服务器请求网页时,都会创建网页类的一个新实例。这通常意味着在每次往返过程中将会丢失所有与该页面及其控件关联的信息。例如,如果用户将信息输入到 HTML 网页上的Label控件中,此信息将发送到服务器,但是不会返回到客户端。为了克服 Web 编程的这一固有局限性,ASP.NET 页框架包含几种状态管理功能,可以将往返过程之间的页和控件值保存到 Web 服务器,其中一种功能便是视图状态。示例:
前台代码:
<asp:Label ID="Label1" runat="server" Text="" Font-Size="Large" ForeColor="Blue"></asp:Label><br/>
<asp:Label ID="Label2" runat="server" Text="" Font-Size="Large" ForeColor="Blue" EnableViewState="false"></asp:Label><br />
<asp:Button ID="Button1" runat="server" Text=" 确定" οnclick="Button1_Click" /><br />
<asp:Label ID="Label3" runat="server" Text="0"></asp:Label>
然后在页面的Page_Load事件方法中编写如下代码段1-2:
if (!IsPostBack)
{ Label1.Text = "EnableViewState=True"; /*EnableViewState设为True时,Lable1的状态保存在_viewState隐藏字段中,当回发页面时,不执行此语句,但是可以从_ViewState中取到以前的状态信息,所以还是原值。 */
Label2.Text = "EnableViewState=False";
/*EnableViewState设为False时,Lable2的状态没有保存在_viewState隐藏字段中,当回发页面时,不执行此语句,并且取不到以前的状态信息,所以为空。 */
最后在按钮的单击事件中编写如下代码
protected void Button1_Click(object sender, EventArgs e)
{
//检查全局视图状态变量
if (ViewState["Count"] == null)
ViewState["Count"] = 0;
int nCount = (int)ViewState["Count"];
nCount += 1;
//保存全局视图状态变量
ViewState["Count"] = nCount;
Label3.Text = nCount.ToString();
}
2、
隐藏的窗体域:
ASP.NET 允许您将信息存储在HiddenField 控件中,此控件将呈现为一个标准的HTML 隐藏域。隐藏域在浏览器中不以可见的形式呈现,但您可以就像对待标准控件一样设置其属性。当一个网页被提交给服务器时,隐藏域的内容和其他控制的值一块儿被送到HTTP Form集合中。隐藏域可以是任何存储在网页中的与网页有关的信息的存储库,隐藏域在其value属性中存储一个变量,而且必须被显性地添加在网页上。示例:
<form id="Form1" method="post" runat="server">
<input id="Hidden1" style="font-size:larger;" type="hidden" value="这是HTML服务器控件隐藏域测试!" name="Hidden1" runat="server"/><br />
<asp:HiddenField ID="HiddenField1" runat="server" Value="这是ASPNET服务器隐藏域控件的测试" /><br />
<asp:Button ID="Button1" runat="server" Text="确定" οnclick="Button1_Click" /><br />
</form>
protected void Button1_Click(object sender, EventArgs e)
{
Response.Write(Hidden1.Value);
Response.Write("<br/>");
Response.Write(HiddenField1.Value);
}