ASP.NET Web Forms - 维持 ViewState

ASP.NET Web Forms - 维持 ViewState


通过在您的 Web Form 中维持对象的 ViewState(视图状态),您可以省去大量的编码工作。


维持 ViewState(视图状态)

在经典 ASP 中,当一个表单被提交时,所有的表单值都会被清空。假设您提交了一个带有大量信息的表单,而服务器返回了一个错误。您不得不回到表单改正信息。您点击返回按钮,然后发生了什么......所有表单值都被清空了,您不得不重新开始所有的一切!站点没有维持您的 ViewState。

在 ASP .NET 中,当一个表单被提交时,表单会连同表单值一起出现在浏览器窗口中。如何做到的呢?这是因为 ASP .NET 维持了您的 ViewState。 ViewState 会在页面被提交到服务器时表明它的状态。这个状态是通过在带有 <form runat="server"> 控件的每个页面上放置一个隐藏域定义的。源代码如下所示:

<form name="_ctl0" method="post" action="page.aspx" id="_ctl0">
<input type="hidden" name="__VIEWSTATE"
value="dDwtNTI0ODU5MDE1Ozs+ZBCF2ryjMpeVgUrY2eTj79HNl4Q=" />

.....some code

</form>

维持 ViewState 是 ASP.NET Web Forms 的默认设置。如果您想不维持 ViewState,请在 .aspx 页面顶部包含指令 <%@ Page EnableViewState="false" %> ,或者向任意控件添加属性 EnableViewState="false" 。

请看下面的 .aspx 文件。它演示了"老"的运行方式。当您点击提交按钮,表单值将会消失:

实例

<html>
<body>

<form action="demo_classicasp.aspx" method="post">
Your name: <input type="text" name="fname" size="20">
<input type="submit" value="Submit">
</form>
<%
dim fname
fname=Request.Form("fname")
If fname<>"" Then
Response.Write("Hello " & fname & "!")
End If
%>

</body>
</html>

下面是新的 ASP .NET 方式。当您点击提交按钮,表单值不会消失:

实例

点击实例的右边框架中的查看源代码,您将看到 ASP .NET 已经在表单中添加了一个隐藏域来维持 ViewState。

<script runat="server">
Sub submit(sender As Object, e As EventArgs)
lbl1.Text="Hello " & txt1.Text & "!"
End Sub
</script>

<html>
<body>

<form runat="server">
Your name: <asp:TextBox id="txt1" runat="server" />
<asp:Button OnClick="submit" Text="Submit" runat="server" />
<p><asp:Label id="lbl1" runat="server" /></p>
</form>

</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET 参考手册 在 W3School,我们提供完整的 ASP.NET 参考手册,其中包括内建对象和组件,以及它们的属性和方法。 ASP.NET 实例 ASP.NET 实例 一系列的 ASP.NET 实例。 内容目录 ASP.NET 简介 本章解释 ASP.NET 的概念。 ASP.NET vs ASP 本章阐述 ASP.NET 和 ASP 之间的差异。 ASP.NET 页面 本章介绍如何创建您的第一个简单的 ASP.NET 页面。 ASP.NET 服务器控件 本章介绍 ASP.NET 服务器控件。 ASP.NET 事件 本章介绍一些 ASP.NET 事件句柄。 ASP.NET Forms ASP.NET WEB 表单 本章介绍 ASP.NETWEB 表单。 ASP.NET 维持 ViewState 本文讲解如何维持 ViewStateASP.NET 文本框控件 本章阐述 ASP 的基础:文本框控件。 ASP.NET 按钮控件 本章阐述 ASP 的基础:按钮控件。 ASP.NET Binding ASP.NET 数据绑定 本文介绍 ASP.NET 数据绑定。 ASP.NET ArrayList 对象 本文讲解 ASP.NET ArrayList 对象。 ASP.NET Hashtable 对象 本文讲解 ASP.NET Hashtable 对象 ASP.NET SortedList 对象 本文讲解 ASP.NET SortedList 对象 ASP.NET XML 文件 本章介绍如何将数据绑定到一个 XML 文件。 ASP.NET asp:Repeater 控件 本章介绍如何通过 Repeater 控件将数据绑定到一个 XML 文件。 ASP.NET asp:DataList 控件 本文讲解使用 DataList 控件把数据绑定到 XML 文件。 ASP.NET Database ASP.NET 数据库连接 本章介绍 ADO.NET 以及连接到数据库。 ASP.NET 2.0 ASP.NET 2.0 新特性 本节介绍 ASP.NET 2.0 中的新特性。 ASP.NET 2.0 母版页 本节解释母版页(Master Pages)的概念。 ASP.NET 2.0 导航 本节讲解 ASP.NET 2.0 的导航控件。 ASP.NET 参考手册 ASP.NET HTML Server 控件参考 完整的 HTML 服务器控件参考手册,包括其属性、方法以及事件。 ASP.NET Web Server 控件参考 完整的 Web 服务器控件参考手册,包括其属性、方法以及事件。 ASP.NET Validation Server 控件参考 完整的 Validation 服务器控件参考手册,包括其属性、方法以及事件。 ASP.NET 实例 ASP.NET 实例 一系列 ASP.NET 实例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值