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;

VPSMS:53元/月KVM-512MB/15G SSD/1TB/洛杉矶CN2 GIA

VPSMS最近在做两周年活动,加上双十一也不久了,商家针对美国洛杉矶CN2 GIA线路VPS主机提供月付6.8折,季付6.2折优惠码,同时活动期间充值800元送150元。这是一家由港人和国人合资开办的VPS主机商,提供基于KVM架构的VPS主机,美国洛杉矶安畅的机器,线路方面电信联通CN2 GIA,移动直连,国内访问速度不错。下面分享几款VPS主机配置信息。CPU:1core内存:512MB硬盘:...

hostodo:美国大流量VPS,低至$3,8T流量/月-1.5G内存/1核/25gNVMe/拉斯维加斯+迈阿密

hostodo从2014年年底运作至今一直都是走低价促销侧率运作VPS,在市场上一直都是那种不温不火的品牌知名度,好在坚持了7年都还运作得好好的,站长觉得hostodo还是值得大家在买VPS的时候作为一个候选考虑项的。当前,hostodo有拉斯维加斯和迈阿密两个数据中心的VPS在促销,专门列出了2款VPS给8T流量/月,基于KVM虚拟+NVMe整列,年付送DirectAdmin授权(发ticket...

90IDC-香港云主机,美国服务器,日本KVM高性能云主机,创建高性能CLOUD只需60秒即可开通使用!

官方网站:点击访问90IDC官方网站优惠码:云八五折优惠劵:90IDCHK85,仅适用于香港CLOUD主机含特惠型。活动方案:年付特惠服务器:CPU均为Intel Xeon两颗,纯CN2永不混线,让您的网站更快一步。香港大浦CN2測速網址: http://194.105.63.191美国三网CN2測速網址: http://154.7.13.95香港购买地址:https://www.90idc.ne...

enableviewstate为你推荐
主页改不了浏览器主页改不了深圳公交车路线深圳公交路线雅虎社区雅虎是什么1433端口怎么开启本机1433端口ps抠图技巧如何使用PS抠图godaddyGodaddy域名怎么接受开机滚动条电脑开机有滚动条的画面创维云电视功能谁能具体介绍一下创维云电视的主要功能,以及基本的使用方式,如果能分型号介绍就更好了,O(∩_∩)O谢谢人人逛街包公免费逛街打一成语2012年正月十五2012年正月十五上午9点27分出生的女孩儿五行缺什么,命怎么样
vps教程 hawkhost优惠码 php主机 老左博客 监控宝 360抢票助手 web服务器架设 有奖调查 安徽双线服务器 跟踪路由命令 百度云加速 什么是web服务器 游戏服务器出租 域名和主机 香港博客 phpwind论坛 asp简介 台式机主机 最好的空间留言 百度空间登陆首页 更多