为什么ViewState和Control Values在使用AJAXFileUpload的部分Postback上丢失了?

时间:2015-03-25 04:47:33

标签: asp.net ajax file-upload popup state-management

我有一个.aspx页面包含按钮,可以在按钮点击时打开popup。 弹出窗口具有AJAXFileUpload控件。单击按钮打开弹出窗口时,session值将发送到弹出窗口,page load这些session值将分配给ViewStateHiddenField,{{ 1}}。

问题: 当我在包含DataTable的弹出窗口中的click按钮上Upload时,会将图片保存到AjaxFileUpload AJAXUploadComplete中的表格中。 在这种情况下,我无法访问event 值,不知道为什么?

Popup.aspx.cs

ViewState,HiddenField and DataTable

注意:相同的功能在页面上正常工作。但是,与弹出窗口一起使用它会刷新 DataTable dt=new DataTable(); protected void Page_Load(object sender, EventArgs e) { int noOfImages; string[] imagePaths; if (dt != null && dt.Rows.Count==0) { dt.Columns.Add("QuoteID"); dt.Columns.Add("PrepID"); dt.Columns.Add("IsPrep"); dt.Rows.Add(string.Empty, string.Empty, string.Empty); } if ((!IsPostBack )) { if (Session["IsPrep"] != null || ViewState["IsPrep"]!= null) { int Isprep = Convert.ToInt32(Session["IsPrep"].ToString()); if (Session["IsPrep"] != null) { ViewState["IsPrep"] = Session["IsPrep"]; ViewState["QuoteID"] = Convert.ToString(Session["QuoteIDForListing"]); int intQuoteID = Convert.ToInt32(ViewState["QuoteID"]); hdnQuoteID.Value = intQuoteID.ToString(); ViewState["PrepID"] = Convert.ToString(Session["PrepIDForListing"]); if (dt != null && dt.Rows.Count > 0) { dt.Rows[0]["QuoteID"] = Convert.ToString(Session["QuoteIDForListing"]); dt.Rows[0]["PrepID"] = Convert.ToString(Session["PrepIDForListing"]); dt.Rows[0]["IsPrep"] = Convert.ToString(Session["IsPrep"]); } Session["IsPrep"] = null; Session["QuoteIDForListing"] = null; Session["PrepIDForListing"] = null; } } } } protected void AjaxFileUpload1_UploadComplete1(object sender, AjaxControlToolkit.AjaxFileUploadEventArgs e) { //here: ViewState,HiddenField,DataTable values are all get cleared dont know why? if (dt != null && dt.Rows.Count > 0) { //here dt is set to null any idea? } //if (!string.IsNullOrEmpty(Convert.ToString(ViewState["QuoteID"]))) if (!string.IsNullOrEmpty(Convert.ToString(hdnQuoteID.Value))&& hdnIsPrepId.Value=="0") { int QuoteID = Convert.ToInt32(ViewState["QuoteID"]); ///some code here } // else if (!string.IsNullOrEmpty(Convert.ToString(ViewState["PrepID"]))) else if (!string.IsNullOrEmpty(Convert.ToString(hdnPrepID.Value)) && hdnIsPrepId.Value == "1") { int PrepID = Convert.ToInt32(ViewState["PrepID"]); ///some code here } } 的所有值    打开弹出窗口后,HiddenField,DataTable,ViewState.无法用于存储数据,因为一次可以打开多个窗口实例。

此外,当Session与Popup一起使用以发送值时,query string会在附加AjaxFileUpload contextkey和guid时出错。

请建议任何解决方案/更改?

0 个答案:

没有答案