当前位置:首页 > .NET的视图状态ViewState与Request.Form及string和String的区别

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

点击次数:1159  更新日期:2010-12-28
\n

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


\n

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

\n

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


\n

    \n

  • \n

    字符串


    \n

  • \n

    整数


    \n

  • \n

    布尔值


    \n

  • \n

    Array 对象


    \n

  • \n

    ArrayList 对象


    \n

  • \n

    哈希表


    \n

  • \n

    自定义类型转换器


\n

ViewState属性用法如下:


\n

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


\n

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


\n

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


\n

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


\n

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


\n

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

设计家园 http://www.dwww.cn 整理

\n