仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 702|回复: 6
打印 上一主题 下一主题

[学习教程] ASP.NET编程:ASP.NET 2.0中利用HiddenField控件

[复制链接]
老尸 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:35:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
数据库有很多应用领域,但是如果你单单学数据库的话基本上做数据库管理员比较合适而已,跟领域结合的你还得再学习那些领域知识。(其实数据挖掘我真是不懂,本来这学期开了一门课了。asp.net|控件  HiddenField控件望文生义就是埋没输出框的服务器控件,它能让你保留那些不必要显现在页面上的且对平安性请求不高的数据。大概这个时分应当有这么一个疑问,为何有了ViewState、Session和Cookie等形态保留机制,还必要用起HiddenField呢?

  增添HiddenField,实际上是为了让全部形态办理机制的使用水平加倍周全。由于不论是ViewState、Cookie仍是Session,都有其生效的时分,好比用户因某种需求请求设置ViewState为false,大概情况前提限定利用Cookie,大概用户长工夫没有举措招致Session过时等等,那这个时分HiddenField无疑是最好选择。

  HiddenField控件的感化复杂的说是用于存储必要在向服务器的发送间坚持的值。它作为<inputtype="hidden"/>元素出现,而且经由过程增加runat=”server”就能够使它成为尺度的HTML服务器控件。上面列出的是ASP.NETHiddenFieldWeb服务器控件可使用的属性和事务。

<asp:HiddenField
 EnableTheming="True|False"
 EnableViewState="True|False"
 ID="string"
 OnDataBinding="DataBindingeventhandler"
 OnDisposed="Disposedeventhandler"
 OnInit="Initeventhandler"
 
 OnPreRender="PreRendereventhandler"
 OnUnload="Unloadeventhandler"
 OnValueChanged="ValueChangedeventhandler"
 runat="server"
 SkinID="string"
 Value="string"
 Visible="True|False"
/>
  由于HiddenField的值将出现给客户端扫瞄器,以是它不合用于存储平安敏感的值。若要为HiddenField控件指定值,请利用Value属性,请注重是Value而不是Text。现实上HiddenField并没有Text属性,这和DropDownList、CheckBoxList等尺度按钮的属人命名体例分歧。在尺度的属人命名体例中,Text的值是出现给用户看到的,而Value的值则是通长是经由过程代码举行把持的。比方你可让DropDownList的Text属性显现用户名而让它的Value存储用户的编号。

  上面的代码显现的是改控件的基础利用。

<html>
<head>
<scriptlanguage="C#"runat="server">
voidButton1_Click(objectsender,EventArgse)
{
 if(HiddenField1.Value==String.Empty)
  HiddenField1.Value="0";

  HiddenField1.Value=(Convert.ToInt32(HiddenField1.Value)+1).ToString();
  Label1.Text=HiddenField1.Value;
}
</script>
</head>
<body>
<h3><fontface="Verdana">HiddenField</font></h3>
<formrunat=server>
<asp:HiddenFieldid=HiddenField1runat=Server/>
<asp:Buttonid=Button1Text="单击按钮"runat="server"/>
单击<asp:Labelid=Label1Text="0"runat=server/>次
</form>
</body>
</html>
  在下面代码中,<asp:HiddenFieldid=HiddenField1runat=Server/>就界说了一个埋没控件在按钮的单击事务里盘算用户单击的次数,并将改次数赋值给Label1。

  你能够将下面代码中的<asp:HiddenFieldid=HiddenField1runat=Server/>改成<inputtype=hiddenid=HiddenField1runat=Server>也是能够的

  在利用下面代码里,假如你从扫瞄器里检察源代码会失掉以下的信息:

<formname="Form1"method="post"action="Default.aspx"id="Form1">
  这是由于HiddenField是经由过程HTTP协定举行传送数据的,以是假如你经由过程"method="get"大概链接翻开新的窗体页,那末HiddenField其实不可用。

  别的,HiddenField并非代替Session来保护形态的,在下面例子里,固然你点击一次按钮能够显现你点击的次数可是并非说它能够纪录你的形态信息。假如你从头翻开扫瞄器那末你看到的此处仍旧是0而不是3。
<P>  HiddenField事务

  HiddenField较为经常使用的是ValueChanged事务,该事务在Value值产生改动时触发该事务。但是在实践利用时,要晓得页面纪录按次。在页面回传过程当中,详细的页面周期你能够到以下网站检察

http://msdn2.microsoft.com/zh-cn/library/ms178472.aspx

  上面的例子申明了这个成绩

<head>
<scriptrunat="server"language="c#">
protectedvoidPage_Load(objectsender,EventArgse)
{
 Response.Write("<p>页面的Page_Load事务触发,触发工夫是:"+DateTime.Now.ToString());
 if(HiddenField1.Value==String.Empty)
  HiddenField1.Value="0";}

  protectedvoidButton1_Click(objectsender,EventArgse)
  {
   Response.Write("<p>Button1_Click为改动Hidden的值前事务触发,触发工夫是:"+DateTime.Now.ToString());
HiddenField1.Value=(Convert.ToInt32(HiddenField1.Value)+1).ToString();
   Label1.Text=HiddenField1.Value;
  }
  protectedvoidHiddenField1_ValueChanged(objectsender,EventArgse)
  {
   Response.Write("<p>HiddenField的ValueChanged事务触发,触发工夫是:"+DateTime.Now.ToString());}
</script>
</head>

<body>
<formid="form1"runat="server">
<div><asp:HiddenFieldID="HiddenField1"runat="server"OnValueChanged="HiddenField1_ValueChanged"/>
</div><asp:LabelID="Label1"runat="server"Text="Label"></asp:Label>
<br/><asp:ButtonID="Button1"runat="server"Text="Button"/>
</form></body>
</html>
  在这个例子里,我们想要的了局是:当用户单击按钮时,经由过程按钮的Button1_Click事务变动HiddenField1的Value,然后再触发HiddenField1的HiddenField1_ValueChanged事务,但是现实真的云云吗?

  运转下面的代码,失掉的了局正如你看到的,每次单击时,Button的确改动了HiddenField的值,可是我们在HiddenField1_ValueChanged里界说的输入并没有实行,换句话说页面并没有实行ValueChanged事务。

  要了解这个成绩还必要懂得页面的声明周期,在页面周期过程当中,你能够看到在Page_Init里是读取或初始化控件属性,然后再是Controlevents。

  这里的事务意义是说:在Page_Init事务里,Web页面会承受用户回传的数据,比方将<spanid="Label1">Label</span>赋值给ID为Label1的Text属性,将<inputtype="hidden"name="HiddenField1"id="HiddenField1"value="0"/>的value值赋值给HiddenField1的Value属性。等一切初始化终了了,页面才入手下手实行控件的事务--Button1_Click,在Button事务里将HiddenField的Value值改动。那末这里既然已将Value值改动为何没有实行ValueChanged事务呢?

  此时,固然这里已将Value值改动,可是在Page_Init里保留的这是由于以后单击Button按钮时,固然改动了HiddenField但一样又一次触发了页面的复兴,也就是固然在上一此HiddenValue的值为0,而此次将其值改成1,可是在页面回传后,因为ViewState会保留前次的装(这里是1),以是在Page_Init里,以为HiddenField的初始值为1,而本次仍是1,使得它感到数据没有变更,以是仍旧不会触发ValueChanged事务

  固然,你能够禁用HiddenField来举行处置,就能够实行ValueChanged事务,可是现实上你禁用ViewState后,页面不再保留ViewState的值使得页面以为每次哀求HiddenField的都是新的,比方以下代码:

  你并没有改动Hiddenfield的值,可是仍旧每次都实行。

<%@PageEnableViewState="false"%>
<head>
<scriptrunat="server"language="c#">
protectedvoidPage_Load(objectsender,EventArgse)
{
 if(HiddenField1.Value==String.Empty)
  HiddenField1.Value="111";
}

protectedvoidButton1_Click(objectsender,EventArgse)
{
 //HiddenField1.Value=(Convert.ToInt32(HiddenField1.Value)+1).ToString();
 Label1.Text=TextBox1.Text;
}

protectedvoidHiddenField1_ValueChanged(objectsender,EventArgse)
{
 Response.Write("Changed."+DateTime.Now.ToString());
 Response.Write(HiddenField1.Value);
 Response.Write(TextBox1.Text);
}

</script>
</head>
<body>

<formid="form1"runat="server"><div>
<asp:HiddenFieldID="HiddenField1"runat="server"OnValueChanged="HiddenField1_ValueChanged"/>
</div>
<asp:LabelID="Label1"runat="server"Text="Label"></asp:Label>
<br/>
<asp:TextBoxrunat=serverID=TextBox1></asp:TextBox>
<asp:ButtonID="Button1"runat="server"Text="Button"/>
</form>
</body>
</html>  使用HiddenFile并分离ASP.NET2.0供应的“交织CrossPage”页面能够完成页面数据的传送,该情形针对如许的一种计划:
  在一个注册页面里,必要用户输出数据,因为备注一栏的数据大概良多,能够在新窗口能够使用相似FreeTextBox的控件让用户格局化文本,并在输出终了后,前往原注册页面。关于这类情形,今后会先容。
c++是语言,其实C++和java的应用范围根本就不一样的。在java应用的领域内,c++是不合适的。所以微软才搞了C#和Java对抗。
因胸联盟 该用户已被删除
沙发
发表于 2015-1-19 17:51:12 | 只看该作者
Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。
深爱那片海 该用户已被删除
板凳
发表于 2015-1-25 18:39:08 | 只看该作者
是目前ASP在UNIX/Linux上的应用可以说几乎为0)。所以平台的局限性和ASP自身的安全性限制了ASP的广泛应用。
透明 该用户已被删除
地板
发表于 2015-2-3 13:09:58 | 只看该作者
主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。
若相依 该用户已被删除
5#
发表于 2015-3-8 16:31:28 | 只看该作者
现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。
变相怪杰 该用户已被删除
6#
发表于 2015-3-16 05:52:11 | 只看该作者
业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
老尸 该用户已被删除
7#
 楼主| 发表于 2015-3-22 20:43:17 | 只看该作者
众所周知,Windows以易用而出名,也因此占据不少的服务器市场。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-16 04:13

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表