2013-04-11 43 views
0

我看到的错误:错误:状态信息是这个页面无效,可能已损坏

The state information is invalid for this page and might be corrupted 

在我的网页。根据一些阅读材料,我认为这个错误可能是由于几个原因发生的,a并且可能很难排除故障。

在aspx页面我有两个下拉控件:

<asp:DropDownList ID="DropDownList3" runat="server" DataSourceID="dsClients" DataTextField="Client_Name" DataValueField="Client_Name" AutoPostBack="True" OnSelectedIndexChanged="DropDownList3_SelectedIndexChanged" ondatabound="DropDownList3_DataBound"></asp:DropDownList> 
<asp:DropDownList ID="ddQualIDInsert" runat="server" DataSourceID="dsQual" DataTextField="Project_Name" DataValueField="Qual_ID"></asp:DropDownList> 

在代码隐藏文件我使用Ajax来更新,并从第一个下拉菜单重建基础上选定的值第二个下拉选项:

protected void DropDownList3_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    dsQual.Where = "Client_Name = \"" + ((DropDownList)sender).SelectedValue +"\""; 
} 

下拉get有时填充,但大多数抛出错误。

回答

0

您正在动态更改页面(服务器端控件),并且会改变页面的view state,因此在回发后,ASP.NET将解密view state,这与预期的不匹配。

+0

任何规避错误的方法? – stats101 2013-04-11 13:51:42

+0

删除任何非服务器端控件或解释您需要的,然后我们可以提供更多帮助。 – Xaqron 2013-04-11 13:58:43

+0

我需要根据从另一个下拉列表中选择的值(DropDownList3),使用ajax更新下拉列表中的值(ddQualIDInsert)。 – stats101 2013-04-11 14:01:21

0

我得到了这个问题,并花了很长时间才解决它在我的代码。


首先是我有UpdatePanel和一个jQuery对话框。以下是我正在使用的脚本。

<script> 
    var uiDialog = $('.ui-dialog-container').parent(); 
    (uiDialog.next().length && uiDialog.appendTo((document.forms.item(0) != null) ? document.forms.item(0) : document.body)); 
    //verifyUser(); 
    function ShowDialog() { 

     dialog = $("#dialog-form").dialog({ 
      autoOpen: true, 
      resizable: false, 
      height: 400, 
      width: 800, 
      modal: true, 
      overlay: { 
       backgroundColor: '#000', 
       opacity: 0.5 
      } 


     }); 
    } 



</script> 

这是形式

<div id="dialog-form" title="Verify Transaction" style="display:none;" > 
    <asp:ScriptManager ID="ScriptManager2" runat="server" /> 


      <fieldset style="background-color:#ffd800;border-radius:5px;"> 

      <label for="fname">First Name :</label> 
      <label for="fname"><%= DetailsView1.Rows[7].Cells[1].Text %></label><br /> 

      <label for="lname">Last Name  :</label> 
      <label for="lname"><%= DetailsView1.Rows[9].Cells[1].Text %></label><br /> 

      <label for="zip">Zip Code  :</label> 
      <label for="zip"><%= DetailsView1.Rows[22].Cells[1].Text %></label><br /> 



      </fieldset> 
    <hr /> 
    <asp:Button id="btnVerified" runat="server" OnClick="btnVerify_Click" UseSubmitBehavior="false" Text="Verified" /> 
      <asp:Button ID="btnCancelled" runat="server" OnClientClick="dialog.dialog('close')" Text="Cancelled" UseSubmitBehaviour="false"/> 


</div> 

这里我们可以看到,我使用的服务器端和客户端脚本的按钮控制。他们两人工作的重要一点是从对话框中移除表单标签,将脚本放入UpdatePanel并设置UseSubmitBehaviour =“false”。这将导致对话框回发,这是我们需要去服务器端。

最初我有形式标签。一旦我删除了表单标签,它就会执行事件OnClientClick和OnClick服务器端事件。干杯!如果有任何机构有这个问题,这里就是解决方案。

以下问题得到最终解决:

  1. 客户端事件的执行。
  2. 服务器端事件执行jQuery-UI对话框弹出。
  3. Dialog做一个PostBack,这意味着我们可以在对话框中有一个完整的ASP.NET控件。
  4. “状态信息对此页无效并可能已损坏”的问题已得到解决。

注:我在表单中使用DetailsView控件。

干杯!

相关问题