2014-01-14 1 views
0

많은 페이지에서 유사한 기능을 사용하는 응용 프로그램을 작성 중입니다. 모달 창을 열고 사용자가 검색을 수행 할 수있는 화면이 있습니다. 사용자가 레코드를 클릭하면 레코드 이름이 세션에 먼저 저장되고 부모 창이 모달을 닫은 다음 새로 고침을 요청받습니다.한 페이지에서 페이지로드 전에 세션이 손실되었지만 다른 페이지에서는로드되지 않았습니다.

부모의 페이지로드시 다른 텍스트를 검색하고 화면을 채우기 전에 검색 텍스트 세션의 값이 무엇인지 확인합니다.

이 설정은 내가 개발 한 첫 번째 화면에서 제대로 작동하며 한 번 실패하지 않았습니다. 문제는 내가 정확히 동일한 방식으로 설정 한 추가 화면에서 세션 값이 부모 창의 페이지로드에서 선택되면 NULL로 설정되고 작업중인 동일한 코드도 복사된다는 것입니다. 이 페이지는 동일해야합니다.

자식 창 JS :

<script type="text/javascript"> 
     function sendval() { 
      window.parent.onSave(); - Just switches off a checkdirty function. 
      window.parent.location.reload(); - Reloads the parent so it can get the val on page load 
     } 
     </script> 

자식 윈도우 버튼 :

<asp:Button ID="Button1" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "AddressCode") %>' OnClientClick="sendval();" OnClick="Button1_Click" /> 

자식 창 버튼있어서 세션 값

protected void Button1_Click(object sender, EventArgs e) 
{ 
    string buttonText = ((Button)sender).Text; 
    Session["CustTypeVal"] = buttonText; 
} 

부모 윈도우 체크 (이것이 세션 한 페이지에서는 null이지만 다른 페이지에서는 null이 아닙니다.

protected void Page_Load(object sender, EventArgs e) 
      { 
//get the session variable from the open page in order to do the search. 
       if (Session["CustTypeVal"] != null) 
       { 
        //The method you need to run after refresh 
        SearchInvAddr((string)Session["CustTypeVal"]); 
        //Remove the session after 
        Session.Remove("CustTypeVal"); 
       } 
} 

이 문제에 대한 도움을 주시면 감사하겠습니다.

+0

더 많은 코드를 공유 할 수 있습니까? 아래에 내 답변을 추가했지만 더 많은 코드가 귀하의 질문에보다 완벽하게 답변하는 데 도움이됩니다. 세션 값을 올바르게 가져 오지 못하는 페이지의 코드가 도움이됩니다. – dgarbacz

답변

1

여기에 코드를

protected void Page_Load(object sender, EventArgs e) 
      { 
//get the session variable from the open page in order to do the search. 
       if (Session["CustTypeVal"] != null) 
       { 
        //The method you need to run after refresh 
        SearchInvAddr((string)Session["CustTypeVal"]); 
        //Remove the session after 
        Session.Remove("CustTypeVal"); 
       } 
} 

그 첫 페이지, 그리고 두 번째 페이지에 동일한 코드가있는 경우는, 세션 값은 더 이상 때문에

Session.Remove("CustTypeVal"); 

존재하려고하지 않습니다 세션 값을 사용하는 경우 로그 아웃 할 때까지 해당 값을 지울 필요가 없으므로 잠재적으로 보안을 위반하는 데 사용되지 않는 한 제거해야합니다.

관련 문제