2013-04-11 1 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 +"\""; 
} 

Иногда выпадающее меню заполняется, но чаще всего выдает ошибку.

ответ

0

Вы меняете свою страницу (элементы управления на стороне сервера) динамически, и это изменило бы view state страницы, поэтому после обратной связи ASP.NET расшифровывает view state и не соответствует ожидаемому.

+0

Любой способ обхода ошибки? – stats101

+0

Удалите любой элемент управления, не относящийся к серверу, или объясните, что вам нужно, мы можем помочь вам больше. – Xaqron

+0

Мне нужно обновить значения в раскрывающемся списке (ddQualIDInsert) с помощью ajax на основе значения, выбранного из другого раскрывающегося списка (DropDownList3). – stats101

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> 

Здесь мы видим, что я использую на стороне сервера и на стороне клиента сценарий в элементе управления Button. Важно, чтобы оба из них работали: удалите тег формы из диалога, поместите скрипт в UpdatePanel и установите UseSubmitBehaviour = "false". Это приведет к тому, что диалог будет возвращен, и это то, что нам нужно, чтобы перейти на сервер.

Первоначально у меня были теги формы. Как только я удалил тег формы, он выполнил как события OnClientClick, так и события на стороне сервера OnClick. Приветствия! Если какой-либо орган имеет эту проблему, то это решение.

следующие вопросы получили окончательное разрешение:

  1. Client-Side Event исполнение.
  2. Выполнение события на стороне сервера с помощью всплывающего окна jQuery-UI.
  3. Диалог делает PostBack, что означает, что мы можем иметь полную форму ASP.NET с элементами управления внутри диалогового окна.
  4. Проблема «информации о состоянии, недействительной для этой страницы и может быть повреждена» решена.

Примечание: Я использую элемент управления DetailsView внутри формы.

Cheers !!

Смежные вопросы

 Смежные вопросы