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;

新注册NameCheap账户几天后无法登录原因及解决办法

中午的时候有网友联系提到自己前几天看到Namecheap商家开学季促销活动期间有域名促销活动的,于是就信注册NC账户注册域名的。但是今天登录居然无法登录,这个问题比较困恼是不是商家跑路等问题。Namecheap商家跑路的可能性不大,前几天我还在他们家转移域名的。这里简单的记录我帮助他解决如何重新登录Namecheap商家的问题。1、检查邮件让他检查邮件是不是有官方的邮件提示。比如我们新注册账户是需...

触碰云高性价20.8元/月,香港云服务器,美国cn2/香港cn2线路,4核4G15M仅115.2元/月起

触碰云怎么样?触碰云是一家成立于2019年的商家。触碰云主营香港/美国 VPS服务器、独立服务器以及免备案CDN。采用的是kvm虚拟构架,硬盘Raid10,Cn2线路,去程电信CN2、移动联通直连,回程三网CN2。最低1核1G带宽1M仅20.8元/月,不过这里推荐香港4核4G15M,香港cn2 gia线路云服务器,仅115.2元/月起,性价比还是不错的。点击进入:触碰云官方网站地址触碰云优惠码:优...

收到几个新商家投稿(HostMem,无忧云,青云互联,TTcloud,亚洲云端,趣米云),一起发布排名不分先后

7月份已经过去了一半,炎热的夏季已经来临了,主机圈也开始了大量的夏季促销攻势,近期收到一些商家投稿信息,提供欧美或者亚洲地区主机产品,价格优惠,这里做一个汇总,方便大家参考,排名不分先后,以邮件顺序,少部分因为促销具有一定的时效性,价格已经恢复故暂未列出。HostMem部落曾经分享过一次Hostmem的信息,这是一家提供动态云和经典云的国人VPS商家,其中动态云硬件按小时计费,流量按需使用;而经典...

enableviewstate为你推荐
伪装微信地理位置什么软件可以伪装QQ微信的地理位置?优酷路由宝怎么赚钱优酷路由宝是如何赚钱的?无线路由器限速设置无线路由器速度如何设置?无线路由器限速设置路由器里面限速参数如何设置?打开网页出现错误我打开网页老出现错误是怎么了?flash导航条如何添加FLASH导航条人人逛街为什么女人都喜欢逛街?谢谢了,大神帮忙啊2012年正月十五农历2012年正月15早上9点多生的!命里缺什么!是什么命相怎么上传音乐怎么上传音乐?发邮件怎么发怎样发邮件?
什么是域名地址 highfrequency 新加坡服务器 59.99美元 名片模板psd lighttpd 好看的桌面背景图 中国智能物流骨干网 息壤代理 t云 电信主机 独享主机 上海电信测速网站 架设邮件服务器 外贸空间 网购分享 丽萨 web应用服务器 个人免费邮箱 wordpress中文主题 更多