2009-11-29 5 views

답변

3
ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "SessionValue", "var sessionValue = '" + Session["Background1"] + "';", true); 
+0

나는 codebehind 함수에서이 코드를 추가했다. 자바 스크립트에서 sessionValue가 정의되어 있지 않다고 말하면이 문장은 자바 스크립트에서 전역 변수 sessionValue를 정의한다고 생각한다. 그 경우 우리는이 변수를 명시 적으로 정의 할 필요가 없다. – Mishigen

+0

코드 조각은 다음 코드를 생성하는 것이다 ('Session [ "Background1"]'은'red'를 반환한다) : '. 정의되지 않은 오류가 발생하는 경우 값을 읽는 자바 스크립트가 렌더링 된 스크립트보다 먼저 실행되기 때문일 수 있습니다. 이것을 결정하기 위해 렌더링 된 HTML을보십시오. 한 가지 해결책은이 값을 읽는 코드를 DOMReady 또는 페이지로드 이벤트 리스너로 옮기는 것입니다. –

1

저는 개인적으로 스크립팅 방법을 선호합니다. 당신의 변수가 현재로 자바 스크립트에 선언 된 가정하자 :

var background1 = null; // TODO: Add value from session. 

세션에서 값을 추가하려면, 당신이 할 필요가 이것이다 :

var background1 = '<%= Session["Background1"] %>'; 

페이지가 출력이 ASP.NET입니다, <%=%> 사이의 표현식이 계산되어 페이지에 쓰여 지므로 실제로는 Response.Write이됩니다. 회원이 공개 또는 보호 된 레벨에서 귀하의 페이지에서 사용할 수있는 한, 귀하는이를 귀하의 자바 스크립트에이 방식으로 푸시 (push) 할 수 있습니다.

불쾌하게 자세한 설명이있는 ClientScriptManager보다이 방법을 사용하는 것이 더 쉽습니다.

+0

내 자바 스크립트 함수에서 경고 (배경)를 사용할 때 경고 메시지로 <% = Session [ "Background1"] %> 세션이 발생합니다. 모든 값을 평가하지 않고 코드 내에서 사용 된 문자열 만 표시하고있는 것 같아요. – Mishigen

+0

코드 블록이 페이지에서 평가되지 않는다는 것은 그 자체의 또 다른 문제점입니다. –

관련 문제