×
ASP.NET 教程ASP.NET 简介

WP 教程

WebPages 简介WebPages RazorWebPages 布局WebPages 文件夹WebPages 全局WebPages 表单WebPages 对象WebPages 文件WebPages 帮助器WebPages WebGridWebPages 图表WebPages EmailWebPages PHPWebPages 发布WebPages 实例

WP 参考手册

WebPages 类WebPages 安全WebPages 数据库WebPages 邮局WebPages 帮助器

ASP.NET Razor

Razor 简介Razor 语法Razor C# 变量Razor C# 循环Razor C# 逻辑Razor VB 变量Razor VB 循环Razor VB 逻辑

ASP.NET MVC

MVC 简介MVC 应用程序MVC 文件夹MVC 布局MVC 控制器MVC 视图MVC 数据库MVC 模型MVC 安全MVC HTML 帮助器MVC 发布MVC 参考手册

WF 教程

WebForms 简介WebForms 页面WebForms 控件WebForms 事件WebForms 表单WebForms ViewStateWebForms TextBoxWebForms ButtonWebForms 数据绑定WebForms ArrayListWebForms HashtableWebForms SortedListWebForms XML 文件WebForms RepeaterWebForms DataListWebForms 数据库连接WebForms 母版页WebForms 导航WebForms 实例

WF 参考手册

WebForms HTMLWebForms ControlsWebForms Validation

ASP.NET 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>

演示实例 »

分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)