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的跨语言特性之一。  

【转】Request.Form:

Request.Form:获取以POST方式提交的数据(接收Form提交来的数据); Request.QueryString:获取地址栏参数(以GET方式提交的数据) Request:包含以上两种...
  • cruelchen
  • cruelchen
  • 2013-07-12 10:45:30
  • 418

json往前台送数据中文乱码

方法 @RequestMapping(value=”editGood”,produces=”text/html;charset=UTF-8”) @ResponseBody pub...
  • l3922768721
  • l3922768721
  • 2016-06-28 23:32:19
  • 2919

web前端——前端页面与后台controller实现前端后台交互

前端jsp页面: 删除 后台controller: @RequestMapping("/del/{gid}") public String del(@PathVariabl...
  • fengcai0123
  • fengcai0123
  • 2016-11-23 17:13:10
  • 2738

PHP连接SQL SERVER 数据库 PHP连接MYSQL数据库并解决中文乱码问题。

PHP连接SQL SERVER或者MYSQL 过程都是差不多的。上次写了连接代码,其实还有前置准备工作。这次补上。 主要参考文献: http://blog.csdn.net/xiaozhega...
  • zuiliannvshen
  • zuiliannvshen
  • 2017-10-16 14:23:52
  • 515

QT 编程点滴

类定义后面要加";" 函数的实现部分,如果定义部分有void,则实现部分不能少; 检查include文件有无少; error: request for member `show' in `(...
  • Mac_cm
  • Mac_cm
  • 2011-07-19 17:59:38
  • 12456

Optional int parameter 'folderId' is not present but cannot be translated into a null value due to b

严重: Servlet.service() for servlet [controller] in context with path [/gxbms] threw exception [Reques...
  • zhangbest2009
  • zhangbest2009
  • 2014-05-27 14:30:56
  • 21529

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

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

viewstate视图状态解码

  • 2011年06月26日 15:56
  • 30KB
  • 下载

简单介绍__VIEWSTATE/__EVENTTARGET/__EVENTARGUMENT

__VIEWSTATE:页面状态信息在客户端的存储(ViewState中存储的信息, EnableViewState="true"的控件状态信息). __EVENTTARGET:页面回传触发事件页面回...
  • Terry001
  • Terry001
  • 2008-07-06 02:08:00
  • 4584

ExtAspNet应用技巧(六) - ViewState与动态创建控件

文章截图 - 更好的排版 问题描述 在上一篇文章中,首先在页面上以声明的方式定义个工具栏按钮,然后在后台通过编程的方式定义另一个按钮。 1. Asp.net页面声明: ...
  • u010918003
  • u010918003
  • 2013-06-24 11:29:32
  • 657
收藏助手
不良信息举报
您举报文章:ASP.NET 的视图状态ViewState与Request.Form及string和String的区别
举报原因:
原因补充:

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