WEB开发网
开发学院WEB开发ASP.NET ASP.NET - HiddenField Web 服务器控件概述 阅读

ASP.NET - HiddenField Web 服务器控件概述

 2009-11-23 16:52:25 来源:WEB开发网   
核心提示:HiddenField 控件提供了一种在页面中存储信息但不显示信息的方法,例如,ASP.NET - HiddenField Web 服务器控件概述,可以在 HiddenField 控件中存储用户首选项设置,以便可以在客户端脚本中读取此设置,这是一个潜在的安全威胁,默认情况下,若要将信息放入 HiddenField 控件
   HiddenField 控件提供了一种在页面中存储信息但不显示信息的方法。例如,可以在 HiddenField 控件中存储用户首选项设置,以便可以在客户端脚本中读取此设置。若要将信息放入 HiddenField 控件中,请在两次回发之间将其 Value 属性设置为要存储的值。



一、功能

可以使用 HiddenField 控件执行下列操作:

·在页上的隐藏字段中存储数据。

·检测存储在隐藏字段中的数据何时在回发之间发生更改。



二、背景

当浏览器呈现页面时,不会显示 HiddenField 控件中的信息。但可以在客户端脚本中读取和设置此信息。回发页时,HiddenField 控件的内容在服务器代码中可用,该控件包括客户端脚本中所做的任何更改。

说明: 虽然不显示隐藏字段中的信息,但用户可通过查看页面的源来查看此控件的内容。不要在 HiddenField 控件中存储敏感信息,如用户 ID、密码或信用卡信息。



检测已更改的数据:

在将页面回发到服务器之前,可以更改 HiddenField 控件的值。由于使用隐藏字段在服务器代码和客户端脚本之间共享信息,并且客户端脚本已更新了控件的值,因此可能发生上述情况。

为了帮助您检测控件中的数据更改,HiddenField 控件会引发 ValueChanged 事件,即使此控件的值在回发之间发生了更改。您可以处理此事件来确定值是否已发生更改。



三、HiddenField 类

   HiddenField 控件用于存储一个值,在向服务器的各次发送过程中,需保持该值。它呈现为 <input type= "hidden"/> 元素。

通常情况下,Web 窗体页的状态由视图状态、会话状态和 cookie 来维持。但是,如果这些方法被禁用或不可用,则可以使用 HiddenField 控件来存储状态值。

若要指定 HiddenField 控件的值,请使用 Value 属性。您可以提供这样一个例程,每次由于创建 ValueChanged 事件的事件处理程序,而在向服务器的各次发送过程中更改 HiddenField 控件的值时,都会调用该例程。



示例

下面的示例演示在向服务器的各次发送过程中,如何使用 HiddenField 控件存储 TextBox 控件的值。

安全说明: 此示例有一个接受用户输入的文本框,这是一个潜在的安全威胁。默认情况下,asp.net 网页验证用户输入是否不包括脚本或 HTML 元素。

<%@ Page language="C#" %>



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">



 void ValueHiddenField_ValueChanged (Object sender, EventArgs e)

 {



  // Display the value of the HiddenField control.

  Message.Text = "The value of the HiddenField control is " + ValueHiddenField.Value + ".";



 }



</script>



<html >

  <head runat="server">

  <title>HiddenField Example</title>

</head>

<body>

    <form id="Form1" runat="server">



      <h3>HiddenField Example</h3>



      Please enter a value and click the submit button.<br/>



      <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"

       onvaluechanged="ValueHiddenField_ValueChanged"

       value=""

       runat="server"/>



    </form>

  </body>

</html>



<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>

Tags:ASP NET HiddenField

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接