ASP.NET 2.0新增控件-HiddenField

本文介绍了ASP.NET中HiddenField控件的作用及应用场景,探讨了它与ViewState、Session和Cookie的区别,并通过实例展示了如何使用ValueChanged事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  转自MS.Tech

HiddenField控件顾名思义就是隐藏输入框的服务器控件,它能让你保存那些不需要显示在页面上的且对安全性要求不高的数据。也许这个时候应该有这么一个疑问,为什么有了ViewStateSessionCookie等状态保存机制,还需要“返回老套”用起HiddenField呢?增加HiddenField,其实是为了让整个状态管理机制的应用程度更加全面。因为不管是ViewStateSession还是Cookie,都有其失效的时候(比如用户因某种需求要求设置ViewStatefalse,或者环境条件限制使用SessionCookie等等),那这个时候HiddenField无疑是最佳选择,也说明了简单实用的东西永远不会过期的道理。<o:p></o:p>

说到这里,联想起前面的BulletedList控件的产生理由,竟然也有异曲同工之处。我想,它们虽然都是“不起眼”的控件,但是它们的再次出现带给我们的思考和意义远远比它们的技术应用带给我们的多得多。扔掉“小看”任何东西的眼镜,你都会发现它值得夸耀的一面。<o:p></o:p>

HiddenField控件的主要成员有Value属性和ValueChanged事件:<o:p></o:p>

<o:p> </o:p>

l        Value:保存在隐藏输入框中的值。<o:p></o:p>

l        ValueChanged:在Value值发生改变时触发该事件。不过在我的调试过程中,发现还应该再设置HiddenField控件的EnableViewState属性为False方可,默认为True的情况下将视Value值没有发生改变,从而无法触发该事件。<o:p></o:p>

<o:p> </o:p>

简单示例:Default.aspx<o:p></o:p>

<o:p> </o:p>

<%@ Page Language="C#" %><o:p></o:p>

<o:p> </o:p>

<!DOCTYPE html PUBLIC "-//W<st1:chmetcnv unitname="C" sourcevalue="3" hasspace="False" negative="False" numbertype="1" tcsc="0" w:st="on">3C</st1:chmetcnv>//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><o:p></o:p>

<o:p> </o:p>

<script runat="server"><o:p></o:p>

    protected void Page_Load(object sender, EventArgs e)<o:p></o:p>

    {<o:p></o:p>

        if (HiddenField1.Value == String.Empty)<o:p></o:p>

            HiddenField1.Value = "0";<o:p></o:p>

    }<o:p></o:p>

<o:p> </o:p>

    protected void Button1_Click(object sender, EventArgs e)<o:p></o:p>

    {<o:p></o:p>

        HiddenField1.Value = (Convert.ToInt32(HiddenField1.Value) + 1).ToString();<o:p></o:p>

        Label1.Text = HiddenField1.Value;<o:p></o:p>

    }<o:p></o:p>

<o:p> </o:p>

    protected void HiddenField1_ValueChanged(object sender, EventArgs e)<o:p></o:p>

    {<o:p></o:p>

        Response.Write("Changed." + DateTime.Now.ToString());<o:p></o:p>

    }<o:p></o:p>

</script><o:p></o:p>

<o:p> </o:p>

<html xmlns="http://www.w3.org/1999/xhtml" ><o:p></o:p>

<head runat="server"><o:p></o:p>

    <title>Untitled Page</title><o:p></o:p>

</head><o:p></o:p>

<body><o:p></o:p>

    <form id="form1" runat="server"><o:p></o:p>

    <div><o:p></o:p>

        <asp:HiddenField ID="HiddenField1" runat="server" OnValueChanged="HiddenField1_ValueChanged" EnableViewState="False" /><o:p></o:p>

    </div><o:p></o:p>

        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><o:p></o:p>

        <br /><o:p></o:p>

        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /><o:p></o:p>

    </form><o:p></o:p>

</body><o:p></o:p>

</html><o:p></o:p>

<o:p> </o:p>

[总结]:诚如前面所说,HiddenField虽然是个“不起眼”的控件,但是它的再次出现带给我们的思考和意义远远比它的技术应用带给我们的多得多。<o:p></o:p>

<o:p> </o:p>

[参考资料]<o:p></o:p>

1.         MSDN Library for Visual Studio 2005 beta2

2.         http://beta.asp.net/QUICKSTART/aspnet/default.aspx



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值