2011-08-19 3 views
1

언어 드롭 다운 목록이있는 마스터 페이지가 있습니다. 세션에서 드롭 다운의 선택된 값을 저장합니다. 세션의 값이 무엇인지 페이지로드를 확인하려고합니다. 하지만 페이지로드시 세션에 아무 것도 없기 때문에 예외가 발생합니다. 누군가 세션을 기본값으로 설정할 수있는 페이지로드 전에 어떤 메소드를 호출해야합니까?마스터 페이지에서 세션 값 가져 오기 - PageLoad

미리 감사드립니다. 당신은 당신의 세션 변수의 값을 설정 Page_PreLoad 이벤트를 사용할 수

protected void ddlLanguage_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     Session["Language"] = ddlLanguage.SelectedValue; 
    } 

protected void Page_Load(object sender, EventArgs e) 
    { 

     if (!IsPostBack) 
     { 

      ddlLanguage.SelectedValue = Session["Language"].ToString(); 
     } 

답변

3

당신은 후 Page_Init 이벤트 내부의 디폴트 값으로 세션 변수를 초기화 할 수있다. 따라서 Page_Load 이벤트가 시작될 때까지 적어도 확인할 값이 있습니다.

또는 Page_Load 이벤트 &에서 null 값에 대한 세션 변수를 확인하고 실제로 null 인 경우 해당 값을 사용해도됩니다.

protected void Page_Load(object sender, EventArgs e) 
{ 

    if (!IsPostBack) 
    { 

     ddlLanguage.SelectedValue = Session["Language"] == null ? "0" : Session["Language"].ToString(); 
    } 

당신이 당신의 드롭 다운 목록에있는 어떤 디폴트 값으로 삼항 연산자의 진정한 상태에서 제로 바꾸기 :

이 두 번째 옵션의 경우, 뭔가처럼되고 코드를 변경합니다.

+0

두 번째 옵션을 시도하자 – asma

+0

그것은 효과가있다. 고맙습니다 – asma

0

...

+0

여전히 PageLoad가 먼저 – asma

+1

을 호출합니까? 그 사이에 Muhammad Akhter가 제안한 것과 같이 Session [ "Language"]이 null인지 아닌지 확인하십시오. – Waqas

+0

그래, 나도 같은 했어 – asma

2

세션에서 값을 가져 오려고 할 때 null이고 아직 값이 지정되지 않았으므로 사용하기 전에 확인해야합니다.

if (Session["Language"] != null) 
{ 
     ddlLanguage.SelectedValue = Session["Language"].ToString(); 
} 
+0

그래, 나는 똑같은 짓을했다. 그러나 @Carl Hancke가 먼저 대답했다. – asma

+0

둘 다 동시에 대답했다. :) –

+0

그것은 정말 혼란스러운 결정이다.이 상황에서 내가 적은 점수를 가진 사람에게 대답을 표시한다 : -s – asma

1

페이지 init 이벤트에서 기본 옵션을 설정할 필요가 없습니다, 당신은이 방법으로 같은 페이지로드 이벤트에서 언어 드롭 다운 메뉴를 설정할 수 있습니다

마스터 페이지 코드

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      if (Session["culture"] != null) 
       ddlLanguage.SelectedValue = Session["culture"].ToString(); 
      else 
      { 
       ddlLanguage.SelectedValue = "en-US"; 
       Session["culture"] = "en-US"; 
      } 
     } 
    } 

    protected void ddlLanguage_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     Session["culture"] = ddlLanguage.SelectedValue; 
    } 

를 ==== =============

이렇게하면 세션에서 선택한 언어를 유지할 수 있으며 전체 응용 프로그램에서 사용할 수 있습니다.