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;

TMTHosting:夏季优惠,美国西雅图VPS月付7折,年付65折,美国服务器95折AS4837线路

tmthosting怎么样?tmthosting家本站也分享过多次,之前也是不温不火的商家,加上商家的价格略贵,之到斯巴达商家出现,这个商家才被中国用户熟知,原因就是斯巴达家的机器是三网回程AS4837线路,而且也没有多余的加价,斯巴达家断货后,有朋友发现TMTHosting竟然也在同一机房,所以大家就都入手了TMTHosting家的机器。目前,TMTHosting商家放出了夏季优惠,针对VPS推...

DMIT(季度$28.88)调整洛杉矶CN2 GIA优化端口

对于DMIT商家已经关注有一些时候,看到不少的隔壁朋友们都有分享到,但是这篇还是我第一次分享这个服务商。根据看介绍,DMIT是一家成立于2017年的美国商家,据说是由几位留美学生创立的,数据中心位于香港、伯力G-Core和洛杉矶,主打香港CN2直连云服务器、美国CN2直连云服务器产品。最近看到DMIT商家有对洛杉矶CN2 GIA VPS端口进行了升级,不过价格没有变化,依然是季付28.88美元起。...

ParkInHost - 俄罗斯VPS主机 抗投诉 55折,月付2.75欧元起

ParkInHost主机商是首次介绍到的主机商,这个商家是2013年的印度主机商,隶属于印度DiggDigital公司,主营业务有俄罗斯、荷兰、德国等机房的抗投诉虚拟主机、VPS主机和独立服务器。也看到商家的数据中心还有中国香港和美国、法国等,不过香港机房肯定不是直连的。根据曾经对于抗投诉外贸主机的了解,虽然ParkInHost以无视DMCA的抗投诉VPS和抗投诉服务器,但是,我们还是要做好数据备...

enableviewstate为你推荐
怎么在qq空间里添加背景音乐怎么在QQ空间里插入背景音乐??ps抠图技巧如何使用PS抠图申请证书申请毕业证书苹果5怎么越狱苹果5怎么越狱?网易公开课怎么下载手机上的网易公开课的付费课程怎么下载??????安装迅雷看看播放器迅雷看看播放器安装系统分析员系统分析师是什么职业?主要做什么工作?什么是云平台什么是云平台管理软件,一个云平台软件应该具有哪些基本功能网站优化方案几种常用的网站优化方法blogcn南京明城墙(太平门一带某些地区)的城砖上为什么会有一些小洞(每块砖两个洞洞……)?
vps是什么意思 vps动态ip 联通vps 河南vps sugarhosts cpanel主机 天猫双十一抢红包 论坛空间 中国特价网 申请个人网页 nerds 爱奇艺vip免费试用7天 重庆双线服务器托管 国外视频网站有哪些 优酷黄金会员账号共享 厦门电信 web服务器是什么 西安服务器托管 starry 阿里云手机官网 更多