`

ASP.NET状态管理之三(隐藏域HiddenField)

阅读更多

 

ASP.NET 允许您将信息存储在 HiddenField 控件中,此控件将呈现为一个标准的 HTML 隐藏域。
隐藏域在浏览器中不以可见的形式呈现,但您可以就像对待标准控件一样设置其属性。
当向服务器提交页时,隐藏域的内容将在 HTTP 窗体集合中随同其他控件的值一起发送。
隐藏域可用作一个储存库,您可以将希望直接存储在页中的任何特定于页的信息放置到其中。

安全注意
恶意用户可以很容易地查看和修改隐藏域的内容。请不要在隐藏域中存储任何敏感信息或保障应用程序正确运行的信息。

HiddenField 控件在其Value属性中只存储一个变量,并且必须通过显式方式添加到页上。
为了在页处理期间能够使用隐藏域的值,必须使用 HTTP POST 命令提交相应的页。如果在您使用隐藏域的同时,为了响应某个链接或 HTTP GET 命令而对页进行了相应处理,那么隐藏域将不可用。

HiddenField 控件用于存储一个值,在向服务器的各次发送过程中,需保持该值。它呈现为 <input type= "hidden"/> 元素。
通常情况下,Web 窗体页的状态由视图状态、会话状态和 cookie 来维持。但是,如果这些方法被禁用或不可用,则可以使用 HiddenField 控件来存储状态值。

若要指定 HiddenField 控件的值,请使用 Value 属性。

在向服务器的各次发送过程中,当 HiddenField 控件的值更改时,将引发ValueChanged事件

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>无标题页</title>

    <script type="text/javascript">
    function PageLoad()
  {
 
    // Set the value of the HiddenField control with the
    // value from the TextBox.
    form1.ValueHiddenField.value = form1.ValueTextBox.value;
   
  }

    </script>

</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:TextBox ID="ValueTextBox" runat="server" />
            <br />
            <input type="submit" name="SubmitButton" value="Submit" onclick="PageLoad()" />
            <br />
            <asp:Label ID="Message" runat="server" />
            <asp:HiddenField ID="ValueHiddenField" runat="server" OnValueChanged="ValueHiddenField_ValueChanged" />
        </div>
    </form>
</body>
</html>

 

 

 

 

总结

可以在页上的隐藏域中存储特定于页的信息,作为维护页的状态的一种方式。
如果使用隐藏域,最好在客户端上只存储少量经常更改的数据。

注意:
如果使用隐藏域,则必须使用 HTTP POST 方法向服务器提交页,而不是使用通过页 URL 请求该页的方法(HTTP GET 方法)向服务器提交页。
 

使用隐藏域的优点
1.不需要任何服务器资源:隐藏域在页上存储和读取。
2.广泛的支持:几乎所有浏览器和客户端设备都支持具有隐藏域的窗体。
3.实现简单:隐藏域是标准的HTML控件,不需要复杂的编程逻辑。

使用隐藏域的缺点
1.潜在的安全风险  
隐藏域可以被篡改。如果直接查看页输出源,可以看到隐藏域中的信息,这导致潜在的安全性问题。
您可以手动加密和解密隐藏域的内容,但这需要额外的编码和开销。如果关注安全,请考虑使用基于服务器的状态机制,从而不将敏感信息发送到客户端。
2.简单的存储结构  
隐藏域不支持复杂数据类型。
隐藏域只提供一个字符串值域存放信息。
若要存储多个值,必须实现分隔的字符串以及用来分析那些字符串的代码。您可以手动分别将复杂数据类型序列化为隐藏域以及将隐藏域反序列化为复杂数据类型。但是,这需要额外的代码来实现。
如果您需要将复杂数据类型存储在客户端上,请考虑使用视图状态。视图状态内置了序列化,并且将数据存储在隐藏域中。
3.性能注意事项  
由于隐藏域存储在页本身,因此如果存储较大的值,用户显示页和发送页时的速度可能会减慢。
4.存储限制  
如果隐藏域中的数据量过大,某些代理和防火墙将阻止对包含这些数据的页的访问。因为最大数量会随所采用的防火墙和代理的不同而不同,较大的隐藏域可能会出现偶发性问题。
如果您需要存储大量的数据项,请考虑执行下列操作之一:
(1)将每个项放置在单独的隐藏域中。
(2)使用视图状态并打开视图状态分块,这样会自动将数据分割到多个隐藏域。
(3)不将数据存储在客户端上,将数据保留在服务器上。向客户端发送的数据越多,您的应用程序的表面响应时间越慢,因为浏览器需要下载或发送更多的数据。
 

 

Sql Server2005 Transact-SQL 新兵器学习总结之-总结
MS SQL数据库备份和恢复存储过程(加强版本)
sql server中分布式查询随笔(链接服务器(sp_addlinkedserver)和远程登录映射(sp_addlinkedsrvlogin)使用小总结)
WAP开发资料站(最新更新)
自定义格式字符串随笔 (IFormattable,IFormatProvider,ICustomFormatter三接口的实现)
Mcad学习笔记之异步编程(AsyncCallback 委托,IAsyncResult接口,BeginInvoke方法,EndInvoke方法的使用小总结)
Mcad学习笔记之通过反射调用類的方法,屬性,字段,索引器(2種方法)
Mcad学习笔记之序列化(2进制和Soap序列化)
Mcad学习笔记之委托再理解(delegate的构造器,BeginInvoke,EndInvoke,Invoke4个方法的探讨)
WinForm开发,窗体显示和窗体传值相关知识总结
Mcad学习笔记之Microsoft Windows服务
copy某目錄下的所有的目錄和文件到目的目錄(目錄數據備份)
ASP.NET状态管理之一(概括篇)

分享到:
评论

相关推荐

    ASP.NET状态管理

    ### ASP.NET状态管理详解 #### 一、ASP.NET状态管理概览 ASP.NET状态管理是一项关键技术,用于在无状态的HTTP环境中维持用户的交互状态。由于HTTP协议本身是无状态的,即每次请求都是独立的,服务器并不会记住前一...

    07.ASP.NET状态管理

    ### ASP.NET状态管理详解 #### 一、状态管理概述 状态管理是Web开发中的一个重要概念,尤其是在基于浏览器/服务器(B/S)架构的应用程序中。与传统的客户端/服务器(C/S)模型不同,在B/S模型中,每个HTTP请求都是...

    ASP.NET中HiddenField隐藏域控件的使用方法

    开发人员应当根据具体的应用场景和安全需求来使用HiddenField控件,并且要明白它并不是用来存储敏感信息或替代服务器端状态管理机制的。通过合理的使用,HiddenField可以帮助开发者构建出更加动态和功能丰富的Web...

    asp.net 笔试题

    ASP.NET 是一种基于微软.NET Framework的服务器端网页开发技术,用于构建动态网站、Web应用程序和Web服务。在ASP.NET笔试题中,常见的知识点包括访问修饰符、页面间数据传递、递归算法、委托与事件、方法重载与覆盖...

    ASP.NET 3.5 开发大全

    4.4.3 隐藏域 4.4.4 Cookie 4.4.5 客户端状态维护 4.5 ASP.NET页面生命周期 4.6 ASP.NET生命周期中的事件 4.6.1 页面加载事件(Page_PreInit) 4.6.2 页面加载事件(Page_Init) 4.6.3 页面载入事件(Page_Load) ...

    ASP.NET3.5从入门到精通

    4.4.3 隐藏域 4.4.4 Cookie 4.4.5 客户端状态维护 10 第一篇 窗口与界面编程 4.5 ASP.NET 页面生命周期 4.6 ASP.NET 生命周期中的事件 4.6.1 页面加载事件(Page_PreInit) 4.6.2 页面加载事件(Page_Init) 4.6.3 ...

    ASP.NET 3.5 开发大全word课件

    4.4.3 隐藏域 4.4.4 Cookie 4.4.5 客户端状态维护 4.5 ASP.NET页面生命周期 4.6 ASP.NET生命周期中的事件 4.6.1 页面加载事件(Page_PreInit) 4.6.2 页面加载事件(Page_Init) 4.6.3 页面载入事件(Page_Load) ...

    ASP.NET实现javascript无刷新倒计时.doc

    -- 定义一个隐藏域,存储倒计时的标准时间,也就是总的倒计时间 --&gt; &lt;asp:Label ID="lalSeetime" runat="server"&gt;&lt;/asp:Label&gt; &lt;!-- 定义一个 Label 显示倒计时时钟 --&gt; ``` 在后端代码(如ASP.NET的C#代码),我们...

    ASP.NET 3.5 开发大全11-15

    4.4.3 隐藏域 4.4.4 Cookie 4.4.5 客户端状态维护 4.5 ASP.NET页面生命周期 4.6 ASP.NET生命周期中的事件 4.6.1 页面加载事件(Page_PreInit) 4.6.2 页面加载事件(Page_Init) 4.6.3 页面载入事件(Page_Load) ...

    ASP.NET 3.5 开发大全1-5

    4.4.3 隐藏域 4.4.4 Cookie 4.4.5 客户端状态维护 4.5 ASP.NET页面生命周期 4.6 ASP.NET生命周期中的事件 4.6.1 页面加载事件(Page_PreInit) 4.6.2 页面加载事件(Page_Init) 4.6.3 页面载入事件(Page_Load) ...

    ASP.NET页面之间传递值的几种方式(txt文件)

    7. Form域或HiddenField:在源页面的表单中添加隐藏字段,或者通过JavaScript动态设置,然后在目标页面的PostBack事件中读取。这种方式适用于POST请求,不适用于GET请求。 8. Profile:ASP.NET的Profile提供了一种...

    ASP.NET简答题,doc文档

    在默认情况下,ASP.NET使用Cookie来管理Session ID,但这并不是唯一的方法。可以通过设置`&lt;sessionState mode="InProc"/&gt;`来使用应用程序域内的内存来存储Session数据,这种方式不需要Cookie。此外,还可以使用SQL ...

    ASP.net 130道面试题

    在ASP.NET面试中,常见的问题涵盖了基础语法、面向对象编程、Web控件、页面生命周期、状态管理、数据访问、异常处理、安全性等多个方面。以下是一些关键知识点的详细说明: 1. 访问修饰符的理解: - `private`:...

    Asp.Net中跨页数据提交获取单选按钮的值

    在Asp.Net开发中,跨页数据提交是一个常见的需求...总结,Asp.Net中的跨页数据提交及获取单选按钮的值涉及到服务器端和客户端的交互,以及不同类型的页面状态管理。理解这些知识点对于开发复杂的Web应用程序至关重要。

    一百二十八道 ASP.NET面试题集合 总有您需要的题目

    ASP.NET 是一种基于微软.NET Framework的服务器端网页开发技术,用于构建动态网站、Web应用程序和Web服务。在面试中,了解这些关键概念和技术是至关重要的。以下是一些 ASP.NET、C# 和.NET 面试中常见的问题及其详细...

    C#和ASP.Net面试题目集锦(超全,附答案的呦!!!!!!!!~)

    根据给定文件的信息,我们可以提炼出以下与C#和ASP.NET相关的知识点: ### C#访问修饰符 1. **private**: 私有访问修饰符,只能在声明它的类内部访问。 2. **protected**: 受保护访问修饰符,可以在声明它的类内部...

    asp.net初级程序员面试题

    ASP.NET 初级程序员面试题涉及了多个核心概念和技术,以下是对这些知识点的详细解析: 1. 访问修饰符:`private`、`protected`、`public`、`internal`是C#中的访问控制修饰符,它们决定了类成员的可见性。 - `...

    130道ASP.NET面试题

    以上就是 ASP.NET 面试题中涉及的关键知识点,包括访问修饰符、页面间数据传递、递归、委托和事件、方法重写、状态管理、控件操作、排序算法以及自定义索引器的实现。掌握这些知识点对于成为一名合格的ASP.NET开发者...

Global site tag (gtag.js) - Google Analytics