·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> ASP.NET网站开发 >> ASP.NET - HiddenField Web 服务器控件概述

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

作者:佚名      ASP.NET网站开发编辑:admin      更新时间:2022-07-23
      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>