enableviewstateaspx如何在页面刷新之后保留原来内容?

enableviewstate  时间:2021-01-16  阅读:()

怎么去掉 .net 页面运行后有<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="乱码"/

在aspx页面加上

<%@ Page EnableViewState="False" %>就可以在此页面禁用视图状态

单控件禁用,以文本框为例

<asp:TextBox ID="TextBox1" runat="server" EnableViewState="false"></asp:TextBox>

HiddenField控件怎么作?????

· HiddenField控件顾名思义就是隐藏输入框的服务器控件,他能让你保存那些不必显示在页面上的且对安全性需求不高的数据。

也许这个时候应该有这么一个疑问,为什么有了ViewState、Session和Cookie等状态保存机制,还需要用起HiddenField呢? 增加HiddenField,其实是为了让整个状态管理机制的应用程度更加全方面。

因为不管是ViewState、Cookie还是Session,都有其失效的时候,比如用户因某种需求设置ViewState为false,或环境条件限制使用Cookie,或用户长时间没有动作导致Session过期等等,那这个时候HiddenField无疑是最佳选择。

HiddenField控件的作用简单的说是用于存储需要在向服务器的发送间保持的值。

他作为<input type= "hidden"/> 元素呈现,并且通过添加runat=”server”就能使他成为标准的HTML服务器控件。

下面列出的是ASP.NET HiddenField Web服务器控件能使用的属性和事件。

<asp:HiddenField EnableTheming="True|False" EnableViewState="True|False" ID="string" OnDataBinding="DataBinding event handler" OnDisposed="Disposed event handler" OnInit="Init event handler" OnLoad="Load event handler" OnPreRender="PreRender event handler" OnUnload="Unload event handler" OnValueChanged="ValueChanged event handler" 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> <script language="C#" runat="server"> void Button1_Click(object sender, EventArgs e) { if (HiddenField1.Value == String.Empty) HiddenField1.Value = "0"; HiddenField1.Value = (Convert.ToInt32(HiddenField1.Value)+1).ToString(); Label1.Text = HiddenField1.Value; } </script> </head> <body> <h3><font face="Verdana">HiddenField</font></h3> <form runat=server> <asp:HiddenField id=HiddenField1 runat=Server /> <asp:Button id=Button1 Text="单击按钮" onclick="Button1_Click" runat="server" /> 单击 <asp:Label id=Label1 Text="0" runat=server /> 次 </form> </body> </html> 复制代码 在上面代码中, <asp:HiddenField id=HiddenField1 runat=Server />就定义了一个隐藏控件在按钮的单击事件里计算用户单击的次数,并将改次数赋值给Label1。

你能将上面代码中的 <asp:HiddenField id=HiddenField1 runat=Server />改为<input type=hidden id=HiddenField1 runat=Server >也是能的 在使用上面代码里,如果你从浏览器里查看原始码会得到如下的信息: <form name="Form1" method="post"action="Default.aspx" id="Form1"> 这是因为HiddenField是通过HTTP协议进行传递数据的,所以如果你通过"method="get"或链接打开新的窗体页,那么HiddenField并不可用。

另外,HiddenField并不是取代Session来维护状态的,在上面例子里,虽然你点击一次按钮能显示你点击的次数不过并不是说他能记录你的状态信息。

如果你重新打开浏览器那么你看到的此处仍然是0而不是3。

HiddenField事件 HiddenField较为常用的是ValueChanged事件,该事件在Value值发生改动时触发该事件。

然而在实际使用时,要知道页面记载顺序。

在页面回传过程中,具体的页面周期你能到如下网站查看 //library/ms178472.aspx 下面的例子说明了这个问题 <head> <script runat="server" language="c#"> protected void Page_Load(object sender, EventArgs e) { Response.Write("<p>页面的Page_Load事件触发,触发时间是:" + DateTime.Now.ToString()); if (HiddenField1.Value == String.Empty) HiddenField1.Value = "0"; } protected void Button1_Click(object sender, EventArgs e) { Response.Write("<p>Button1_Click为改动Hidden的值前事件触发,触发时间是:" + DateTime.Now.ToString()); HiddenField1.Value = (Convert.ToInt32(HiddenField1.Value) + 1).ToString(); Label1.Text = HiddenField1.Value; } protected void HiddenField1_ValueChanged(object sender, EventArgs e) { Response.Write("<p>HiddenField的 ValueChanged事件触发,触发时间是:" + DateTime.Now.ToString()); } </script> </head> <body> <form id="form1" runat="server"> <div> <asp:HiddenField ID="HiddenField1" runat="server" OnValueChanged="HiddenField1_ValueChanged" /> </div> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> <br /> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /> </form></body> </html> 复制代码 在这个例子里,我们想要的结果是:当用户单击按钮时,通过按钮的Button1_Click事件更改HiddenField1的Value,然后再触发HiddenField1的HiddenField1_ValueChanged事件,然而事实真的如此吗? 运行上面的代码,得到的结果正如你看到的,每次单击时,Button确实改动了HiddenField的值,不过我们在HiddenField1_ValueChanged里定义的输出并没有执行,换句话说页面并没有执行ValueChanged事件 要理解这个问题还需要了解页面的声明周期,在页面周期过程中,你能看到在Page_Init里是读取或初始化控件属性,然后再是Control events。

这里的事件意思是说:在Page_Init事件里,Web页面会接受用户回传的数据,例如将 <span id="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的值,不过仍然每次都执行。

<%@ Page EnableViewState="false" %> <head> <script runat="server" language="c#"> protected void Page_Load(object sender, EventArgs e) { if (HiddenField1.Value == String.Empty) HiddenField1.Value = "111"; } protected void Button1_Click(object sender, EventArgs e) { // HiddenField1.Value = (Convert.ToInt32(HiddenField1.Value) + 1).ToString(); Label1.Text = TextBox1.Text; } protected void HiddenField1_ValueChanged(object sender, EventArgs e) { Response.Write("Changed." + DateTime.Now.ToString()); Response.Write(HiddenField1.Value); Response.Write(TextBox1.Text); } </script> </head> <body> <form id="form1" runat="server"> <div> <asp:HiddenField ID="HiddenField1" runat="server" OnValueChanged="HiddenField1_ValueChanged" /> </div> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> <br /> <asp:TextBox runat=server ID=TextBox1></asp:TextBox> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /> </form> </body> </html> 复制代码 利用HiddenFile 并结合ASP.NET2.0提供的“交叉Cross Page”页面能实现页面数据的传递,该情况针对这样的一种方案: 在一个注册页面里,需要用户输入数据,由于备注一栏的数据可能非常多,能在新窗口能利用类似FreeTextBox的控件让用户 格式化文本,并在输入完毕后,返回原注册页面。

关于这种情况,以后会介绍

如何取出viewstate中的值,并且还原

ViewState是为了那些在页面回发的时候不能保存状态的控件设计的,而文本框在回发的时候他的值会作为表单内容的一部分传递,返回的时候如果在后台没有修改过textbox的值,它又会被原样返回,所以无论你设不设textbox的EnableViewState属性,他的

谁可以简要说明一下EnableViewState设置为false后的作用?

若设为false,则每次页面刷新,控件中的数据将重新从数据库中检索,有好处也有坏处:好处是在数据没有改变的情况下,不检索数据意味着不用访问数据库,从而提高处理速度,坏处我认为,在某些数据已经改变了的情况下,比如说已经更新了数据库,那么若还是到内存中读取数据的话显然读出来的数据不对了。

EnableViewState是HTML属性还是ASP.NET的标签的属性?

2楼说的挺明白了,我再补充补充。

你要想知道enableviewstate是什么属性,就要先知道viewstate是干什么的。

enableviewstate,就是是否允许控件带viewstate. viewstate,翻译为视图状态。

是控件为了保持状态而实现的一种机制。

http协议是没有状态的,举例来说,比如一个input控件(asp:textbox 在运行之后,呈现在客户端的,就是一个
代码类似 不过,却不用你重新填,你点按钮之后,页面刷新之后,里面的内容仍然保存着,他是怎么保存的呢,这就是viewstate的功劳。

你的页面提交之后,iis会根据viewstate的内容,把你的值重新给你输出到相应的控件里。

在页面上点右键,你会找到一个名字叫__viewstate的hidden,这个隐藏字段,就是viewstate,它的值是经过了base64编码的字符串,这个值,就是记录着你这些控件的状态、值等等,比如你的textbox的值是什么,gridview的每行,每个字段的值、属性等等。

现在你应该明白了,enableviewstate是html的属性,还是的。

aspx如何在页面刷新之后保留原来内容?

如果文本框是服务器控件, 试在if (!ispostback)里写TextBox1.EnableViewState = True;

ATCLOUD-KVM架构的VPS产品$4.5,杜绝DDoS攻击

ATCLOUD.NET怎么样?ATCLOUD.NET主要提供KVM架构的VPS产品、LXC容器化产品、权威DNS智能解析、域名注册、SSL证书等海外网站建设服务。 其大部分数据中心是由OVH机房提供,其节点包括美国(俄勒冈、弗吉尼亚)、加拿大、英国、法国、德国以及新加坡。 提供超过480Gbps的DDoS高防保护,杜绝DDoS攻击骚扰,比较适合海外建站等业务。官方网站:点击访问ATCLOUD官网活...

野草云99元/月 ,香港独立服务器 E3-1230v2 16G 30M 299元/月 香港云服务器 4核 8G

野草云月末准备了一些促销,主推独立服务器,也有部分云服务器,价格比较有性价比,佣金是10%循环,如果有时间请帮我们推推,感谢!公司名:LucidaCloud Limited官方网站:https://www.yecaoyun.com/香港独立服务器:CPU型号内存硬盘带宽价格购买地址E3-1230v216G240GB SSD或1TB 企盘30M299元/月点击购买E5-265016G240GB SS...

RackNerd 黑色星期五5款年付套餐

RackNerd 商家从2019年上线以来争议也是比较大的,一直低价促销很多网友都认为坚持时间不长可能会跑路。不过,目前看到RackNerd还是在坚持且这次黑五活动也有发布,且活动促销也是比较多的,不过对于我们用户来说选择这些低价服务商尽量的不要将长远项目放在上面,低价年付套餐服务商一般都是用来临时业务的。RackNerd商家这次发布黑五促销活动,一共有五款年付套餐,涉及到多个机房。最低年付的套餐...

enableviewstate为你推荐
缓冲区溢出教程如何防止高手使用缓冲区溢出?吴晓波频道买粉五大知识付费平台有哪些?手机区号手机号码+86是移动区号还是联通的区号?xp系统停止服务Windowsxp系统为什么停止服务淘宝网页显示不正常淘宝网显示不正常免费免费建站可以不用钱免费做一个网站吗商标注册查询官网怎么查商标有没有注册安全漏洞计算机一般存在哪些安全漏洞?云挂机有免费的云挂机软件吗?电子商务网站模板我想开发一个电子商务网站,但是想加入自己设计的模板,可以吗?
虚拟主机服务商 宿迁服务器租用 国外免费域名网站 独享100m winhost 128m内存 青果网 qq数据库 刀片式服务器 如何用qq邮箱发邮件 ftp免费空间 服务器防火墙 qq金券 so域名 stealthy ddos攻击软件 网易轻博客 长沙服务器托管 100m空间多少钱 万网主机代理 更多