《ASP.NET本质论》视图状态 ViewState

ASP.NET ViewState解析与优化工具 字段是ASP.NET框架中用于维护Web页面状态的一种机制。它在客户端和服务器之间传递,确保在往返过程中页面元素的状态不丢失,从而为用户提供类似桌面应用的交互体验。存储在HTML表单中,并在页面回传时由客户端发送至服务器。它以Base64编码的序列化字符串形式存在,包含了页面上所有控件的状态信息。ViewState查看工具的主要功能包括查看当前页面的ViewState数据、分析ViewState的结构和内容、监控ViewState大小的变化以及提出优化建议。 阅读详情

                序列化和反序列化
                   对象在内存中以引用的方式相互联结,构成一个复杂的对象数。但是,在外部的设备中,却是以一定的序列保存的,比如,图片文件是以一个有规律的字节序列进行保存的,文本文件是通过字符序列进行保存。所以,内存中的对象如果需要保存到使用序列方式存储的设备在,必须要进行信息的重组,以序列的方式进行描述,才能完成这个任务。这个工作就称为序列化。
                  反序列化就是从序列中重新构建内存中对象的过程。
                  例如,下面定义的是一个Person类。

 [Serializable]
    public class Person
    {
        public int Age { get; private set; }
        public string Name { get; private set; }
        public Person(string name, int age)
        {
            this.Name = name;
            this.Age = age;
        }
    }

当我们创建一个Person类哦对象实例alice之后,在内存中将会有如下的存储结构:
Person alice = new Person("alice", 20);

对象在内存中的表示形式如图所示:

             在C++中,程序员需要参与到序列化和反序列的过程中,在 .NET 中,通过反射,已经可以不再需要程序员参与,非常简单地实现对象的序列化和反序列化。
             在System.Runtime.Serialization 命名空间中,定义了 .NET 中进行序列化和反序列所需要的类和接口。其中接口IFormatter定义了序列化器。
          
                       public interface IFormatter

            主要方法Serialize完成对象的序列化工作,将对象序列化之后写入到流中。
              
               
public void Serialize (
	Stream serializationStream,
	Object graph
)

          Deserialize从流中获取信息,还原为内存中的对象。
               
public Object Deserialize (
	Stream serializationStream
)

           在.NET类库中,命名空间 System.Runtime.Serialization.Formatters.Binary 提供了一个二进制的序列化器 Binary。
[ComVisibleAttribute(true)] 
public sealed class BinaryFormatter : IRemotingFormatter, IFormatter

        使用BinaryFormatter可以非常方便地将alice对象序列化为一个字节序列。
        在序列化的方法中,需要提供一个字节流以保持序列化的结果。为了方便,这里使用MemoryStream将序列化的结果保存在内存中以便使用。
Person alice = new Person("alice", 20);

            BinaryFormatter formatter = new BinaryFormatter();
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            formatter.Serialize(ms, alice);

            byte[] content = ms.ToArray();
            Response.Write(BitConverter.ToString(content));

      我们可以将这些字节通过一个用于读取字节流提供基于流的访问,然后借助于反序列化方法重新在内存中构建一个新的Person对象,这个对象显然不是原来的Person对象,但是,表示的数据都是相同的,所以,从数据的角度来说,我们可以认为还原了原来的对象。
            
System.IO.MemoryStream ms2 = new System.IO.MemoryStream(content);
            Person alice2 = formatter.Deserialize(ms2) as Person;
            
            Response.Write("<br/>"+alice2.Name+"<br/>"+alice2.Age);




         序列化控制
               刚才我们将对象序列化为二进制表示形式,这样的序列化被称为二进制序列化。那么,是不是任何对象都可以进行二进制序列化呢?如果不是的话,什么样的类可以被这样进行二进制序列化呢?
              注意,上面定义的Person类,被标注了一个表情。
                           [Serializable]
             这个标签的定义如下(在使用中,后缀Attribute可以省略)。

public abstract class Attribute : _Attribute
             在使用二进制序列化器的时候,当一个类应用了这个标签,表示这个类的对象实例可以被序列化,如果没有被标记为可序列化,那么,在使用BinaryFormatter进行序列化的时候,CLR将会抛出一个序列化的异常 SerializationException。
            这个标签也可以被应用在类的成员上,不过,在默认情况下,类中的素有私有和共有的成员在序列化的过程中都将被序列化。也就是说,对于支持序列化的类来说,默认情况下,成员已经被应用了支持序列化的标签。如果这个类标注这个标签,可以定制这种类型的序列化过程。
public interface ISerializable
{
    void GetObjectData(
        SerializationInfo info,
        StreamingContext context
    );
}

           在.NET 中,所有的值类型都支持序列化。对于类来说,应用Serializable标签的类将支持序列化操作。例如,常见的System.String,List<T> ,Dictionary<TKey,TValue>,ArrayList 等类型都支持序列化操作。
         
 


黑群晖DSM7.0.1物理机安装教程 使用芯片无忧工具,查看U盘的和。使用,格式化U盘。使用镜像写入工具,把引导写入U盘。修改文件,可以使用工具把文件复制到桌面,通过修改好之后,拖进这个界面中。或者在电脑中,查看U盘,打开U盘中的文件直接修改。具体修改内容如下:PID修改为U盘的PIDVID修改为U盘的VID默认只有mac1=a8412083CB52 mac2=0a11323D47F7 ,增加:mac3=a15823C08000 mac4=a23C04158B52 mac5=82a002524158 mac6=38233052415aS 阅读详情

相关推荐

从零到一:基于Docker与Gewechat协议,打造高可用微信AI助手

本文提供了一份从零开始的实战指南,详细讲解如何利用Docker容器化技术与Gewechat协议,构建一个高可用、低风险的微信AI助手。通过整合Dify AI平台,您可以为微信机器人注入大语言模型的智能,实现自动问答、知识库查询等高级功能,显著提升个人或团队在微信场景下的沟通与信息处理效率。

weixin_29280657的博客 160

ASP.Net ViewState的实现

  ViewState是.Net中提出的状态保存的一种新途径(实际上也是老瓶装新酒);我们知道,传统的Web程序保存状态的方式有这样几种:  1、Application 这是Web应用程序生命期中的全局保存区,保存在Application中的数据是全局有效的;在Asp.Net中,有一个应用程序池,其中保存了数个(或数十个)应用程序实例,每一次请求都会从池中取一个实例来处理请求,在请求完毕之前,这个

timmy3310的专栏 2692

大语言模型(LLM)在组合优化中的新突破:LLM-LNS与FunSearch性能对比

本文深入探讨了大语言模型(LLM)在组合优化中的创新应用,重点对比了LLM-LNS与FunSearch两种方法的性能差异。研究表明,LLM-LNS在物流路径规划、资源调度等场景中展现出显著优势,其双层自演化架构能有效平衡探索与利用,相比传统方法提升效率约43%。文章还提供了实践选择指南,帮助开发者根据具体需求选用合适的技术方案。

weixin_42526415的博客 406

.NET 之ViewState的本质

ViewState是如何实现这些功能。 以名值对的方式来存控件的值,和Hashtable的结构类似; 跟踪那些ViewState中出现改变的值,以便对这些脏数据(dirty)进行进一步的处理; 通过序列化将ViewState中的值保存在页面的隐藏域(Hidden Field)中(这是默认的持久化方式),并通过反序列化得到对应的ViewState对象以便进行相应的操作; 在页面回传的过...

weixin_30752699的博客 93

我用 AI 做了个开源地图工具:从 OpenStreetMap 一键获取全国 AOI/POI 数据

本文介绍了一款免费开源的OSM数据查询与可视化工具,旨在解决Overpass QL语法晦涩、数据获取门槛高的问题。工具支持面数据(AOI)、点数据(POI)及路网三种查询模式,内置30+常用模板实现一键检索。具备高德与OSM双底图切换、坐标自动转换功能,支持GeoJSON、SHP、CSV多格式导出,同时保留自定义查询能力。作为纯HTML单文件应用,可零成本部署至GitHub Pages在线使用。该工具有效降低了地理数据获取难度,是替代商业地图API、高效提取全球开源地理信息的实用利器。

weixin_45812624的博客 585

线性调频LFM脉冲压缩 连续波雷达仿真&线性调频信号仿真分析压缩matlab程序源码

13、线性调频信号(LFM)压缩感知的稀疏与重构算法(OMP)的matlab仿真程序(一个可以在matlab上运行的压缩感知实例;8、具有多普勒频移的线性调频信号(知道带宽、采样频率、T使用MATLAB仿真线性调频信号即LFM,同时具有多普勒频移时,匹配滤波后的波形变化。19、CW脉冲和LFM信号Matlab仿真(这是matlab仿真程序,实现了常规雷达信号CW和线性调频信号LFM的仿真)18、lfm信号模糊函数图 matlab(用matlab 实现的线性调频信号信号(lfm)的模糊函数图)

2301_77866396的博客 400

ASP.NET Web Forms - ViewState(视图状态)

维持 ViewState(视图状态) 在经典 ASP 中,当一个表单被提交时,所有的表单值都会被清空。假设您提交了一个带有大量信息的表单,而服务器返回了一个错误。您不得不回到表单改正信息。您点击返回按钮,然后发生了什么…所有表单值都被清空了,您不得不重新开始所有的一切! 在 ASP .NET 中,当一个表单被提交后,表单会连同表单值一起出现在浏览器窗口中。如何做到的呢?这是因为 ASP .NET ...

weixin_45582785的博客 1413

避开这些坑!用Python ReportLab生成PDF时字体处理与中文排版的5个关键技巧

本文针对Python ReportLab库在PDF自动化生成中常见的中文排版难题,提供了五个关键技巧。内容涵盖字体注册的稳健策略、段落样式的精细控制、表格内中文的换行对齐、页面布局管理以及性能优化,旨在帮助开发者彻底解决中文乱码、排版错位等问题,生成专业美观的PDF文档。

weixin_29250403的博客 624

ASP.NET状态管理(视图状态ViewState)

ASP.NET状态管理之十一(视图状态ViewState) 视图状态是 ASP.NET 页框架默认情况下用于保存往返过程之间的页和控件值的方法。当呈现页的 HTML 形式时,需要在回发过程中保留的页的当前状态和值将被序列化为 Base64 编码的字符串,并输出到视图状态的隐藏字段中。 视图状态是 ASP.NET 页中的储存库,可以存储需要在回发过程中保留的值。例如,您可以将信息存储在视

yaofayong的专栏 457

告别标注地狱!YOLO+CLIP多模态零样本检测全实战:图文联合推理,想检测什么直接输文字,不用训模型

这套方案我给朋友的超市用了快3个月,运行极其稳定,临期商品的检测准确率能到96%,后续加了“货架空货检测”“通道杂物堆积检测”,都是改一行文本就搞定,完全不用重新开发,朋友说省了十几万的定制开发费用。很多做计算机视觉的朋友,总觉得目标检测必须标数据、训模型,其实不是的。现在多模态大模型的能力已经足够强,把YOLO的定位能力和CLIP的图文泛化能力结合起来,就能用极低的成本,搞定绝大多数定制化检测需求。对于我们开发者来说,技术的价值从来不是炫技,而是用最简单的方案,解决最实际的问题。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 516

基于SAGE算法的宽带信道参数估计算法的MATLAB仿真

本文将介绍如何使用MATLAB进行SAGE算法的仿真,以便更好地理解和应用该算法。SAGE算法是一种基于最大期望(Expectation-Maximization)方法的迭代估计算法,用于估计未知的参数。在宽带信道参数估计中,SAGE算法通过迭代优化来估计信道的传输函数。总结起来,本文介绍了如何使用MATLAB进行基于SAGE算法的宽带信道参数提取算法的仿真。通过以上步骤,我们可以得到估计的信道响应,并与真实信道响应进行比较。此外,SAGE算法还可以与其他信道估计算法相结合,以提高估计的准确性和性能。

CodeRoarX的博客 1075

ASP.NET——ViewState视图对象

HTTP协议的无状态特性 ViewState只能保存当前页面的信息,一旦页面跳转,则清空 案例代码 前端代码: &amp;amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; AutoEventWireup=&amp;quot;true&amp;quot; CodeBehind=&amp;quot;Default.aspx.cs&amp;quot; Inherits=&amp;quot;A

老陈聊架构 652

基于FPGA的多通道音频信号采样系统设计

FPGA是随着数字集成电路的发展而逐步演变而来的。从早期的电子管、晶体管、小规模集成电路,到超大规模集成电路(VLSIC),数字集成电路的集成度和性能不断提升。FPGA的出现为系统设计师提供了灵活的设计平台,使其能够在不依赖半导体厂商的情况下快速设计专用集成电路(ASIC)。FPGA具有设计周期短、成本低、开发工具先进等优点,广泛应用于原型设计和产品生产中。VHDL是一种用于描述数字系统的硬件描述语言,其语言形式类似于计算机高级语言,但包含了许多硬件特征语句。

qq_62634009的博客 709

ASP.NET 的视图状态ViewState与Request.Form及string和String的区别

一:视图状态是 ASP.NET 页框架默认情况下用于保存往返过程之间的页和控件值的方法。当呈现页的 HTML 形式时,需要在回发过程中保留的页的当前状态和值将被序列化为 Base64 编码的字符串,并输出到视图状态的隐藏字段中。通过实现自定义的 PageStatePersister 类以存储页数据,您可以更改默认行为并将视图状态存储到另一个位置(如 SQL Server 数据库)。ViewStat

宁静以致远,淡泊以明志 2311

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

ASP.NET 视图状态

Web 是基于无状态的http协议,ASP.NET 为了保证控件在页面传送到服务器,再从服务器发回到页面的时保持之前的状态。 代码准备: 在aspx页面上添加一个listbox控件,和一个button服务器控件: <asp:ListBoxrunat="server"ID="lbViewState"></asp:ListBox><asp:But...

304

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ASP.NET - 维持 ViewState

通过在 Web 表单中维持对象的 ViewState (视图状态),您可以省去大量的编码工作。 维持 ViewState (视图状态) 当 classic ASP 中的表单被提交时,所有的表单值都会被清空。设想一下,您提交了一张带有大量信息的表单,而服务器返回了一个错误。您将不得不返回表单,然后更正其中的信息。您点击后退按钮,然后会发生什么呢... 所有的表单值都被清空了,而您

oliverdsds的专栏 641

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ASP.NET Web Forms 自学篇:(六) 维持 ViewState

ASP.NET Web Forms - 维持 ViewState 通过在您的 Web Form 中维持对象的 ViewState(视图状态),您可以省去大量的编码工作。 维持 ViewState(视图状态) 在经典 ASP 中,当一个表单被提交时,所有的表单值都会被清空。假设您提交了一个带有大量信息的表单,而服务器返回了一个错误。您不得不回到表单改正信息。您点击返回按钮,然后发生了什么…所有表...

灵活大胖子HDG 的博客 549

ASP.NET页面中去除VIEWSTATE视图状态乱码

保存页的所有视图状态信息和控件状态信息。 基于SEO技术的开发,在没有接触MVC框架Razor引擎的时候,我们需要使用ASP.NET引擎,如果使用ASP.NET引擎的服务器端控件,那么在ASP.NET页面中就会生成__Viewstate隐藏域,__Viewstate隐藏域产生的“乱码”对网络爬虫是极其不友好!! “乱码”如下: 1 <div cla...

baifang2747的博客 230

有关视图状态(ViewState)的一些问题

该篇文章是我于2009年6月10日通过自己编写的工具,批量从位于在博客园的博客站点(http://chenxizhang.cnblogs.com)同步而来。文章中的图片地址仍然是链接到博客园的。特此说明!陈希章 原文地址:http://www.cnblogs.com/chenxizhang/archive/2009/04/02/1428295.html原文标题:有关视图状态(View

陈希章@中国 521

ASP.NET之ViewState对象

HTTP协议是“无状态”的,造成服务器无法记住特定用户的请求。 Web服务器不会保留每次浏览器所发Http请求的具体信息和当时的状态。 即使请求来自同一个浏览器,它也将其视为“陌生人”,绝不会“记得”浏览器在不久之前曾经“拜访”过自己。 ASP.NET专门提供了在一个网页多次请求之间保存信息的对象:viewState(视图状态)对象来模拟“成员变量”的角色。 public partial...

小贾爱编程的博客 610

ASP.NET 状态管理(视图状态 ViewState)

无论 Web 程序框架多么先进,它都不能改变一个事实:HTTP是一种无状态协议。        每次 Web 请求后,客户端和服务器端断开,同时 ASP.NET 引擎释放页面对象。这种架构保证了Web应用程序能够同时响应数千个并发请求而不会导致服务器内存崩溃。但其负面效应是你必须通过其他技术存储 Web 请求之间的信息并在需要的时候获取它们。   视图状态       视图

dragon_ton的专栏 2326

ASP.NET页面中去除VIEWSTATE视

保存页的所有视图状态信息和控件状态信息。 源码:http://www.jinhusns.com/Products/Download/?type=xcj 作者在早期参与的项目中曾遇到这样的需求:基于SEO技术的开发,当因为时没有接触的MVC框架的Razor引擎,所以只能用ASP.NET引擎,如果使用ASP.NET引擎的服务器端控件,那么在ASP.NET页面中就会生成__Viewstat...

dhzdhl577371的博客 339

基于COM和.Net视图状态的Asp.net

视图状态(view state)是在单个页面中保存信息的第一选择,ASP.NET Web控件也使用试图状态在回发间保存属性值。通过页面内建的 ViewState 属性,你可以把自己的数据放入到视图状态集合中,可以保存的信息类型包括简单数据类型和自定义对象。   基于COM的视图状态 在传统(基于COM)ASP下,在构建即将输出的HTTP响应时,WEB开发者需要手动为传入的窗体部件

u014351353的专栏 582

ASP.NET服务器控件之视图状态

ASP.NET服务器控件之视图状态<a class="forward" title="转贴并收藏" onclick="function onclick(){Thread.forward();return false;}">为Web页面及其控件保持状态信息是非常有必要的。然而,由于Web应用程序创建于HTTP协议的顶层,这是一个无状态的协议,因此,保持状态信息则变得非常困难。为了

xchy521的专栏 338

ASP.NET Web 窗体- 保持 ViewState简介

通过在Web 表单中维度对象的 ViewState(视图状态,您可以省去大量的编码)工作。 维ViewState(视图状态) 在经典的 ASP 中,当一个表单被提交时,所有的表单值都会被清空。假设您提交了很多信息,返回到服务器的一个错误。返回,然后您开始出现... 在 ASP .NET 中,当一个表单被提交时,表单值会一起出现在浏览器中。因为如何被处理的呢?服务器代码的时候自动定义它的状态。到这个状态是在 控件的所有页面上放置一个隐藏域的。源代码如下: <form name="_

Free雅轩的博客 313

ViewState视图状态

维持 ViewState (视图状态) 当 classic ASP 中的表单被提交时,所有的表单值都会被清空。设想一下,您提交了一张带有大量信息的表单,而服务器返回了一个错误。您将不得不返回表单,然后更正其中的信息。您点击后退按钮,然后会发生什么呢... 所有的表单值都被清空了,而您将不得不重新开始所有的一切。站点不会维持您的 ViewState。 当 ASP .NET 中的表单被提交

Keymo_的奋斗史 1271
上一篇: 简单的URL重写
下一篇: 《ASP.NET本质论》Base64
sky1069
博客等级 码龄19年 7粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值