2013-04-11 1 views
0

손상 될 수 있습니다 내 페이지에서오류 : 상태 정보는이 페이지에 대한 잘못된 내가 오류를보고 있어요

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

. 몇 가지 독서를 토대로, 나는 몇 가지 이유로 인해 오류가 발생할 수 있다는 것을 모았고, 문제를 해결하기가 어려울 수 있습니다.

<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> 

I 업데이트하고 첫 번째 드롭 다운 메뉴에서 선택한 값에 따라 두 번째 드롭 다운 옵션을 다시 아약스를 사용하여 파일 뒤에 코드에서 : 영문 페이지에서

내가 컨트롤을 아래로 두 개의 드롭이 :

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

때때로 드롭 다운이 발생하지만 대부분 오류가 발생합니다.

답변

0

페이지 (서버 측 컨트롤)가 동적으로 변경되어 포스트 백 (post back)시 페이지 view state이 변경되므로 ASP.NET은 view state의 암호를 해독하고 예상 한 것과 일치하지 않습니다.

+0

오류를 피할 방법이 있으십니까? – stats101

+0

비 서버 측 컨트롤을 제거하거나 필요한 것을 설명하면 더 도움이 될 수 있습니다. – Xaqron

+0

다른 드롭 다운 (DropDownList3)에서 선택한 값을 기반으로 아약스를 사용하여 드롭 다운 (ddQualIDInsert)의 값을 업데이트해야합니다. – 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> 

입니다. 두 가지 모두에서 중요한 것은 대화 상자에서 form 태그를 제거하고 스크립트를 UpdatePanel에두고 UseSubmitBehaviour = "false"로 설정하는 것입니다. 이렇게하면 서버 측에 가야 할 포스트 백 대화 상자가 생깁니다.

처음에는 양식 태그가 있습니다. 양식 태그를 제거하면 OnClientClick 이벤트와 OnClick 서버 사이드 이벤트가 모두 실행됩니다. 환호! 여기에 문제가있는 신체가 있다면 해결책이 있습니다.

다음과 같은 문제가 마침내 해결되었다 :

  1. 클라이언트 측 이벤트 실행.
  2. jQuery-UI 대화 상자 팝업으로 서버 측 이벤트 실행.
  3. 대화 상자 내에 컨트롤이있는 완전한 ASP.NET 폼을 가질 수있는 포스트 백을 수행하는 대화 상자.
  4. '이 페이지에 대한 상태 정보가 유효하지 않으며 손상되었을 수 있습니다'라는 문제가 해결되었습니다.

참고 : 양식 내에서 DetailsView 컨트롤을 사용하고 있습니다.

건배 !!

관련 문제