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

原创 2007年10月12日 17:16:00

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

       Web 应用程序是无状态的。每次从服务器请求网页时,都会创建网页类的一个新实例。这通常意味着在每次往返过程中将会丢失所有与该页面及其控件关联的信息。例如,如果用户将信息输入到 HTML 网页上的文本框中,此信息将发送到服务器,但是不会返回到客户端。为了克服 Web 编程的这一固有局限性,ASP.NET 页框架包含几种状态管理功能,可以将往返过程之间的页和控件值保存到 Web 服务器,其中一种功能便是视图状态。 

 

   可以将下列类型的对象存储到视图状态中:

  • 字符串

  • 整数

  • 布尔值

  • Array 对象

  • ArrayList 对象

  • 哈希表

  • 自定义类型转换器 

      ViewState属性用法如下:

        ViewState["paramTable"] = (Hashtable)Session["paramTable"];
        ViewState.Add("paramTable", (Hashtable)Session["paramTable"]);

二:  在CS文件中获得对应页面中的下拉框DropDownList_sitebranch值可以有以下几种方法获得:

        siteInfo.FZJGID = DropDownList_sitebranch.SelectedItem.Value.Trim();
        siteInfo.FZJGID = Request.Form["DropDownList_sitebranch"].ToString();
        siteInfo.FZJGID = Request["DropDownList_sitebranch"].ToString();

   其中Request.Form是 ASP.NET 获取窗体变量的集合。

三:在C#中,string和String有什么区别?

  string属于C#的类型  
  String属于.NET   的类型  
   两者可以等同使用,推荐用string 
  在.NET   所有的类型都是对象。下面是.NET   C#   VB.NET   IL的类型对应表:  
   
  NET                             C#               VB.NET                 IL           值或引用  
  System.Boolean     bool             Boolean           bool                 Value  
  System.Byte           byte             Byte         unsigned   int8       Value  
  System.Char           char             Char                 char                 Value  
  System.DateTime     -                   Date                 -                           Value  
  System.Decimal   decimal         Decimal           -                           Value  
  System.Double       double         Double           float64             Value  
  System.Int16         short           Short             int16                 Value  
  System.Int32         int               Integer         int32                 Value  
  System.Int64         long               Long             int64                 Value  
  System.Object       object         Object           object           Reference  
  System.SByte           sbyte           -                       int8                   Value  
  System.Single       float           Single             float32             Value  
  System.String         string         String           string           Reference  
  System.UInt16         ushort         -             unsigned   int16         Value  
  System.UInt32         uint             -             unsigned   int32           Value  
  System.UInt64         ulong         -               unsigned   int64           Value  
   
  从上表可以看到,不仅仅string和String,还有许多类似的类型。有的没有对应的类型,这时使用的就是.NET的,比如说在C#中没有date类型,所以在C#中我们使用.NET   的Date.   这也是.NET的跨语言特性之一。  

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

无论 Web 程序框架多么先进,它都不能改变一个事实:HTTP是一种无状态协议。        每次 Web 请求后,客户端和服务器端断开,同时 ASP.NET 引擎释放页面对象。这种架构保证了...
  • dragon_ton
  • dragon_ton
  • 2015年09月27日 23:44
  • 592

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

无论 Web 程序框架多么先进,它都不能改变一个事实:HTTP是一种无状态协议。        每次 Web 请求后,客户端和服务器端断开,同时 ASP.NET 引擎释放页面对象。这种架构保证了...
  • my98800
  • my98800
  • 2016年04月29日 12:58
  • 150

页面ViewState体积庞大影响性能解决方案

我们都知道asp.net 服务器控件状态都是通过ViewState对象存储的,实际上是存储在客户端页面上的隐藏域中,当数据量过大时频繁和服务器传输,严重影响性能。直接想到的办法就是把这些数据储存到别的...
  • taoerchun
  • taoerchun
  • 2015年05月07日 17:15
  • 1105

String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的?

本内容是我从各处转载整理得来,是我的学习笔记,如有涉及到版权问题,请给我留言。 或者内容中有不正确的地方,也请各位大神能帮我指出更改,谢谢! 一、区别 1、String是字符串常量,而String...
  • dorapan1987
  • dorapan1987
  • 2015年03月17日 20:36
  • 887

ViewState的使用与配置

 ViewState就是页面中的名字叫做__VIEWSTATE的隐藏控件,它使我们页面体积膨胀,不利于页面的seo优化;页面返送间都要携带更多的大量的数据,耗费更多的流量、延长响应时间。 ...
  • yygzs2012
  • yygzs2012
  • 2017年04月06日 16:03
  • 384

String中==和equal()的区别

==是判断两个字符窜引用是否相等。 .equal()判断的是两个字符窜值是否相等。 不同对象总是产生不同的散列值,即便是他们是相等的值也可以。 因此,如果你想要判断两个字符串是否相等你最好使用.equ...
  • l975764577
  • l975764577
  • 2014年03月09日 19:18
  • 1309

Java基础之String、StringBuffer与StringBuilder的区别及应用场景

1 String、StringBuffer与StringBuilder (1)String 字符串常量; /** Strings are constant; their values cann...
  • chenliguan
  • chenliguan
  • 2016年07月14日 18:35
  • 5921

NSString跟Swift String的区别和使用场景

当下Swift项目已经越来越多,可能会经常见到 str as NSString 或者str as String字符串在这两者之间的来回切换,因为有些操作用OC字符串比较方便,而有些操作则相反,熟练掌...
  • ruglcc
  • ruglcc
  • 2016年12月20日 09:12
  • 1351

Java String为什么是不可变类,StringBuffer与StringBuilder区别

熟悉Java的都知道String类是不可变,但String类为什么设计成不可变类,如何做到不可变没有仔细想过。 String为什么设计成不可变类? 1.Java字符串池的设计方式。     Strin...
  • chenchaofuck1
  • chenchaofuck1
  • 2016年03月10日 15:15
  • 2047

C-串与string的区别(C++)

C++中的C-串与string
  • qq_35244529
  • qq_35244529
  • 2016年08月12日 17:11
  • 1111
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP.NET 的视图状态ViewState与Request.Form及string和String的区别
举报原因:
原因补充:

(最多只允许输入30个字)