2010-12-09 4 views
0

사용자가 내 사이트에서 탭을 선택하면 페이지가 새로 고쳐진 후 페이지를 다시 보낼 수 있도록 해당 탭을 저장하고 싶습니다.jquery.click()에서 ASP.NET 세션 설정

$("#index_0_li").click(function() { 
    <%= Session["SelectedIndex"] = "0" %> 
}); 

$("#index_1_li").click(function() { 
    <%= Session["SelectedIndex"] = "1" %> 
}); 

var index = <%= Session["SelectedIndex"] %>; 

<%= %>이 클릭에 대기하지 않기 때문에 문제가있다, 인덱스는 항상 1로 설정되고 : 나는 (나쁜 코딩 기압, 나는이 개념을 테스트하고 변명) 순간이있다

누구에게 내가 뭘 하려는지 어떻게 달성 할 수있는 아이디어가 있습니까?

감사합니다.

+0

ajax 호출을 다시 작성해야합니다. 서버가 세션에 인덱스를 저장할 수있게합니다. –

+0

또는 대신 쿠키를 사용하십시오. –

답변

5

클라이언트 측 세션 (일명 "쿠키") 만 사용하십시오.

클릭 이벤트에 쿠키를 설정하면 페이지 (또는 "포스트 백")를 제출할 때이 쿠키가 HTTP 요청과 함께 전송되어 Request.Cookies을 통해 읽을 수 있습니다.

+0

고마워, 그 생각 안했어. – webnoob

+0

@webnoob - 문제 없습니다. 때로는 최상의 솔루션이 가장 간단한 솔루션입니다. :) – RPM1984

+0

그리고 우리가 가장 마지막에 생각하는 것 : – webnoob

0

클릭 기능은 클라이언트 측 javascript입니다. 클라이언트에서 서버 측 변수를 설정할 수 없습니다. 예를 들어 jquery 게시물을 사용하여 selectedindex serverside를 설정해야합니다.

+0

서버 측 변수를 설정할 수 있습니다. 문제가 설정되면 제어하고 있습니다.) – webnoob

1

El Ronnoco가 말한 것처럼 ASP.NET 세션에서 선택한 탭을 원한다면 서버로 다시 보내야합니다. AJAX 호출로이 작업을 수행 할 수도 있고, 응용 프로그램에서 수행하는 다른 작업에이 호출을 포함시킬 수도 있습니다.

그러나 클라이언트의 선택된 탭을 유지하기 만하면 RPM1984가 쿠키 (또는 HTML5가 허용되는 경우 다른 로컬 저장소)에 저장하고이를 마지막으로 쿠키에 기록하도록 선택할 수 있습니다/페이지를로드 할 때 로컬 저장 다음은 내 머리 꼭대기에서 벗어 났으므로 구문 오류가있을 수 있습니다 (작동하는 솔루션을 수행하려면 탭과 다른 마크 업을보아야합니다).

$("#index_0_li").click(function() { 
    localStorage.setItem('SelectedTab', '#index_0_li'); 
}); 
$("#index_1_li").click(function() { 
    localStorage.setItem('SelectedTab', '#index_1_li'); 
}); 

$(document).ready(function() { 
    var index = localStorage.getItem('SelectedTab'); 
    if (index !== null) { 
     $(index).click(); 
    } 
});