Tag: viewstate

viewstate在response.redirect上消失

在我的asp.net c#页面上,我有两个带有ajax CalendarExtenders的文本框(开始和结束日期)。 用户选择开始日期然后选择结束日期。 在选择结束日期时,我绑定我的网格,如下所示; protected void calEndDate_TextChanged(object sender, EventArgs e) { BindGrid(); } 在网格中,我有一个带有以下代码的命令按钮 protected void gvAllRoomStatus_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == “Manage”) { GridViewRow row = gvAllRoomStatus.Rows[Convert.ToInt16(e.CommandArgument)]; int BookingID = Convert.ToInt32(row.Cells[1].Text); DataClassesDataContext context = new DataClassesDataContext(); Session[“BookingID”] = BookingID; Response.Redirect(“CheckIn.aspx”); } } 当用户转到该页面并单击后退按钮时,所有选定的日期和gridview数据都会消失。 任何想法为什么观点正在消失?

asp.net Base-64字符串中的字符无效

我有一个移动网站,并且有一些移动客户端存在问题。 我已经在下面发布了一条跟踪,但基本上是手机或wap网关的浏览器,手机连接到互联网url,在窗体中编码viewstate隐藏输入。 / wEPDwULLTExNTMyOTcwOTBkGAEFBlBtTGlzdA9nZA == 变 %2FwEPDwULLTExNTMyOTcwOTBkGAEFBlBtTGlzdA9nZA%3D%3D 所以viewstate失败了。 无论如何在进行处理之前覆盖和urldecode viewstate信息? System.Web.HttpException:状态信息对于此页面无效,可能已损坏。 —> System.Web.UI.ViewStateException:无效的viewstate。 客户IP:65.91.116.34 港口:37172 用户代理:SCH-R430 UP.Browser / 6.2.3.8(GUI)MMP / 2.0 ViewState:%2FwEPDwULLTExNTMyOTcwOTBkGAEFBlBtTGlzdA9nZA%3D%3D 引用站点: 路径:/mobile/Inbox.aspx —> System.FormatException:Base-64字符串中的字符无效。 在System.Convert.FromBase64String(String s) 在System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) 在System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState) 在System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter,String serializedState) 在System.Web.UI.HiddenFieldPageStatePersister.Load() —内部exception堆栈跟踪结束— —内部exception堆栈跟踪结束— 在System.Web.UI.ViewStateException.ThrowError(Exception inner,String persistedState,String errorPageMes​​sage,Boolean macValidationError) 在System.Web.UI.ViewStateException.ThrowViewStateError(Exception inner,String persistedState) 在System.Web.UI.HiddenFieldPageStatePersister.Load() 在System.Web.UI.Page.LoadPageStateFromPersistenceMedium() 在System.Web.UI.Page.LoadAllState() 在System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint) 在System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint) […]

使用C#在asp.net中的Viewstate中没有获得价值?

我正在使用asyncfileupload控件上传文件,我在这样的视图状态中采用路径: protected void ProcessUpload(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e) { string name = System.IO.Path.GetFileName(e.FileName); string dir = Server.MapPath(“upload_eng/”); string path = Path.Combine(dir, name); ViewState[“path”] = path; engcertfupld.SaveAs(path); } 现在当我试图在buttonclick事件中保存该路径时,我没有获得viewstate的值: protected void btnUpdate_Click(object sender, EventArgs e) { string filepath = ViewState[“path”].ToString(); // GETTING NULL in filepath } 在这个文件路径中我得到null实际上我得到错误NULL REFERENCE EXCEPTION 我现在能做什么?

将DataTable分配给ViewState是一个好方法吗?

我从DataBase获取DataTable并分配给ViewState,如下所示:因为我不想每次都访问数据库。 DataTable dt = GetDataTable(); ViewState[“dtTable”] = dt; GetDataTable()是一种方法,它从DataBase中检索1000条记录。 这是最好的方式,哪一种是处理这种方法的最佳方式?

在ViewState中存储数据表

我正在阅读微软关于州管理的这篇文章。 http://msdn.microsoft.com/en-us/library/75x4ha6s(v=vs.100).aspx 我在这里发现了一件有趣的事。 ViewState被归类为客户端选项(虽然我已经知道)。 它让我想起了应用程序中的代码。 DataTable dt = getDatatableFromDB(); ViewState[“dataTable”] = dt; 这段代码目前工作正常。 我的困惑是: 客户端对象(ViewState)如何保存服务器端对象(Datatable)? 使用ViewState存储大型对象(如Datatables)是一种好习惯吗? 如果我们继续使用这种方法可能会产生副作用(如果有的话)?

ViewState仅在Safari中无效

我维护的其中一个站点在很大程度上依赖于ViewState使用(它不是我的代码)。 但是,在ViewState超额膨胀的某些页面上,Safari会抛出”Validation of viewstate MAC failed”错误。 这似乎只发生在Safari中。 Firefox,IE和Opera都在同一场景中成功加载。

在.NET中使用AJAX和ViewState的行为不一致

我发现在我的浏览器上点击“刷新”按钮会暂时搞砸UpdatePanel内的控件的ViewState。 这是我的情况:我创建了一个自定义WebControl,用于在ViewState中存储值。 我将此控件放在UpdatePanel中。 当我点击浏览器上的“刷新”按钮时,它会暂时消除ViewState中的值。 但是,在下一个回发中,在我点击“刷新”之前在ViewState中的值神奇地重新出现。 这种行为搞砸了我的webcontrol。 在我点击“刷新”之后,控件返回到其初始状态,因为ViewState为空并且IsPostBack设置为false。 但是,当我单击我的WebControl中的一个回发控件时,WebControl将在我点击“刷新”之前使用ViewState中的相同值重新加载。 奇怪的是,这只发生在我使用AJAX时。 当我的控件在UpdatePanel之外时,Firefox会给我标准消息,“要显示此页面,Firefox必须发送重复之前执行的任何操作(例如搜索或订单确认)的信息(重新发送)(取消) “。 这很好,因为至少行为是一致的。 但是,我绝对必须在这个项目中使用AJAX。 所以这就是我想做的 – 我想让“刷新”行为保持一致。 如果点击“刷新”根本不影响ViewState,那将是最好的。 但是如果它必须消灭ViewState,那就好了,只要ViewState STAYS消失了。 这些东西都没有价值消失并再次出现。 哦是的,这是我的示例代码: using System; using System.Data; using System.Configuration; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; namespace TestControls { public class TestControl : WebControl { int _clickCount; bool […]

检测视图状态篡改

在我的asp.net项目中已经看到viewstate已经改变了。 有没有检查我的ViewState是否被篡改? (理想情况下用C#)

Viewstate中的敏感数据?

我需要在每个会话中跨多个页面(通过https运行)存储敏感数据。 我不能使用会话对象,主要原因是会话存储被设计为与备份存储一样(主要是进行服务调用并加载会话)。 如果会话已重新启动,或者换句话说会话中的密钥不存在,请创建服务并重新填充会话。 因此,在用户键入敏感数据的情况下,我需要跨页面传送此数据,我们暂时没有持久存储,因此剩下的选项是将这些敏感数据存储在Viewstate中。 1)我应该加密数据并存储在Viewstate中(不建议使用 – sec&perf。含义)或2)我应该将数据存储在可序列化的类中并将其存储在Viewstate中吗? (由于性能影响,不再推荐) 有什么意见吗?

如何在viewstate中存储对象?

我正在使用EWS开发我的电子邮件客户端。 我发现如果我将ItemId存储在viewstate中,它将导致exception说: 在程序集“Microsoft.Exchange.WebServices,Version = 14.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”中键入“Microsoft.Exchange.WebServices.Data.ItemId”未标记为可序列化。 如果我将ItemId存储为字符串,如: ViewState[“itemId”] = id.ToString(); 然后试着回头, ItemId id = (ItemId)ViewState[“itemId”]; 它说我无法从字符串转换为ItemId 。 任何的想法?