jjzjj

ASP.NET Web Forms - 维持 ViewState

runoob 2023-04-07 原文

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>

演示实例 »

有关ASP.NET Web Forms - 维持 ViewState的更多相关文章

  1. ruby - 在 ASP 页面上 Mechanize 中断 - 2

    require'mechanize'agent=Mechanize.newlogin=agent.get('http://www.schoolnet.ch/DE/HomeDE.htm')agent.clicklogin.link_withtext:/Login/然后我得到Mechanize::UnsupportedSchemeError。 最佳答案 Mechanize不支持javascript但您可以将搜索字段添加到表单并为其分配搜索词并使用mechanize提交表单form=page.forms.firstform.add_fie

  2. asp.net - 在 Ruby 中重新实现 ASP.NET 成员资格和用户密码哈希 - 2

    我有一个大型用户数据库(约200,000个),我正在将其从ASP.NET应用程序转移到RubyonRails应用程序。我真的不想要求每个用户重置他们的密码,所以我试图在Ruby中重新实现C#密码哈希函数。旧函数是这样的:publicstringEncodePassword(stringpass,stringsaltBase64){byte[]bytes=Encoding.Unicode.GetBytes(pass);byte[]src=Convert.FromBase64String(saltBase64);byte[]dst=newbyte[src.Length+bytes.Leng

  3. asp.net - IronRuby 死了吗? - 2

    我是.Net程序员,希望扩展并可能在我当前和future的Web应用程序中使用一些Ruby。看着IronRubyWebsite最后一次发布是将近一年前:2011年3月13日。否announcements从那时起就已经在他们的网站上制作了。考虑到所有这些,我想到了几个问题:IronRuby死了吗?如果该项目已终止,是否有任何替代方案集成到.Net中?如果它还活着,它仍然是一个积极维护的项目吗?我在哪里可以找到最新版本?我是不是找错了树?我是否应该将ruby​​保留为ruby​​,将.Net保留为.Net,这两个独立的实体永远不会在同一个项目中相遇?我在stackoverflow上看到过有

  4. javascript - 如何将数据从 ASP.NET WebForms 传递到 Aurelia Global Scope - 2

    我正在从基于Web表单的遗留应用程序引导Aurelia。我的身份验证相关信息在自定义基页类的Web表单应用程序中维护。我如何将此身份验证信息传递和维护到Aurelia的全局范围?这样我就可以在使用路由构建菜单时使用它来根据用户/Angular色显示/隐藏某些菜单项? 最佳答案 您可以将逻辑添加到您的自定义基页中以添加标记到文档的头部,使所有信息都可用于javascript应用程序:...window.appInfo={user:'foo',bar:'baz'};...然后在您的aurelia应用中,您可以根据需要访问此信息:expo

  5. javascript - 为什么 ASP.NET 在 IE7 中导致 "Operation Aborted"错误? - 2

    我已经阅读了很多博客文章,其中提供了IE中“操作中止”错误的原因和解决方案。我最近构建了一个应用程序,有时会为某些用户出现此错误。让我详细解释一下。该应用程序是在VS2008中构建的.NET2.0、ASP.NET和C#Web应用程序。它使用ComponentOneWeb控件以及标准的VisualStudio控件。在其中一个网页中,我让用户在一组ComponentOneWeb输入控件中键入输入,然后将其添加到集合中。集合绑定(bind)到中继器,每次在集合中创建新条目时,中继器都会反弹。如果用户从转发器中删除条目(使用命令按钮),集合将更新并重新回到转发器。当应用程序提交给最终用户进行测

  6. ASP.NET - 使用 jQuery 处理基于 JSON 的 Web 服务的正确方法是什么? - 2

    将基于ASP.NETSOAP的Web服务转换为基于JSON的响应的正确方法是什么?...然后从jQuery中调用它们?集成基于jQuery的AJAX和ASP.NET时的“最佳实践”是什么?文章?书? 最佳答案 可以使用System.Runtime.Serialization和System.Runtime.Serialization.JSON将JSON转换为.NET类。我怀疑您对设置从客户端到服务器的函数调用更感兴趣。我觉得值得一试thistutorial.在本教程中,您需要添加一个网络服务“.asmx”文件。在asmx文件中,您将能

  7. asp.net - 开发不依赖于 JavaScript 的 ASP.NET 应用程序的技巧 - 2

    不确定这是否属于社区wiki...有人可以提供一些关于如何成功构建不依赖于JavaScript的ASP.NET站点的通用指南吗?我的理解是,我应该首先在没有JavaScript的情况下构建一个功能性网站,并用它来增强用户体验。说起来容易做起来难……除了禁用JavaScript并尝试它之外,我如何才能确保我的网站在没有JavaScript的情况下正常工作?或者这是经验带来的东西? 最佳答案 尝试ASP.NETMVC!当然,大多数示例都使用JavaScript来实现AJAX功能,但是构建一个不使用JavaScript的功能齐全的网站也很

  8. asp.net-mvc - 在 ASP.NET MVC 的局部 View 中执行 Javascript - 2

    我在head标签内使用这段JavaScript代码,以便用浏览按钮填充div,以便用户可以上传图像(swfupload)。...varswfu=function(){returnnewSWFUpload({//BackendSettings//settingsgohere...//Toolongtodisplayhere//DebugSettingsdebug:false});}window.onload=swfu;....这很好用,但问题是当我尝试将这段代码放在局部View中时。到目前为止,我还无法让它发挥作用。有没有更有经验的救援人员?谢谢 最佳答案

  9. c# - 如何确定包含在 Asp.net 页面中的重复 Javascript 函数 - 2

    我有一个使用一些javascript函数的应用程序,由于所有javascript都包含在Masterpage中,因此页面附带的大多数javascript不是必需的,并且其中一些是重复的(因为在一些不同的JS文件中使用。)所以我想检查是否有一种方法可以确定重复函数并将其删除? 最佳答案 你可以在声明一个函数的时候检查这个函数是否存在,但是你必须改变它的工作方式。代替functionfoo(){something}做if(window.foo===undefined){window.foo=function(){something}}你

  10. asp.net - Facebook Connect 登录按钮未呈现 - 2

    我正在尝试实现FacebookConnect单点登录网站。我最初只有一个连接按钮(),用户每次想要登录时都必须单击该按钮。我现在可以使用自动登录和注销功能。也就是说,我的站点将检测已登录的Facebook帐户,如果它可以找到与我站点的用户帐户之一匹配的帐户,则自动对其进行身份验证,如果Facebooksession丢失,则自动取消身份验证。我还有一个手动注销按钮,可以让用户退出我的网站和Facebook。所有这些都正常工作,但现在我原来的“连接”按钮间歇性地无法正确呈现。它只是显示为纯XHTML(即,它看起来像纯文本——而不是按钮——并且不可点击),并且没有应用XFBML。这是基本代码

随机推荐