2009-11-17 5 views
1

포털 프레임 워크에 대해 몇 가지 브레인 스톰 작업을하고 있으며 ViewState를 통해 추적되는 탐색 경로 탐색 스택을 사용하고 있습니다 (사용자가 브라우저에서 "뒤로"를 클릭하고 다른 링크를 클릭하면 탐색 경로 오른쪽 페이지에서 출발합니다). 내 페이지는 실제로 URL에 기반한 기본 포털 페이지의 자리 표시 자 컨트롤에로드되는 ascx 컨트롤입니다. 사용자가 포털 링크를 클릭하면 원래 페이지를로드하고 주어진 링크의 "클릭 된"핸들러를 호출하는 포스트 백이 있습니다. 그러면 브라우저가 브라우저 방향을 변경하기위한 리디렉션 명령을 보내기 전에 현재 위치를 탐색 경로 스택으로 "푸시"해야합니다. 내가 가고 싶은 페이지의 URL.ASP.NET에서 ViewState를 유지하면서 브라우저 URL을 변경할 수 있습니까?

리디렉션을 수행하면 ViewState가 사라지기 때문에 저의 브레인 스토밍은 잠시 진행됩니다. 리다이렉트를하기보다, 현재의 페이지 컨트롤을 대상 페이지 컨트롤로 대체하여 내 메인 포털 페이지에 간단히 말하면 추가 http 왕복을 피하고 ViewState를 유지할 수있게되었습니다. 그러나 전체 웹 사이트 경험은 단일 URL의 컨텍스트에서 발생하므로 다른 것들 중에서 URL 책갈피를 잃어 버립니다. AJAX 패널에서 일부 컨트롤을 래핑하면 브라우저의 역사에 관한 한 전체 페이지 요청이 한 페이지 요청으로 발생합니다.

내가 원하는 것은 검색 기록과 URL이 각각의 링크가 설명 URL과 그 모든 것을 가진 새로운 페이지로 안내하는 것처럼 행동하는 것처럼 보이지만 여전히 사용자의 경로를 알 수있는 방법이 있습니다. (ViewState가 이것을 추적하는 가장 간단한 방법 인 것처럼 보이는) 페이지로 이동했습니다.

누구나 사용할 수있는 몇 가지 기술을 제안 해 주시겠습니까?

답변

0

첫 번째 제안 ... ASP.NET MVC를 살펴볼 수 있습니다. 그러나, 나는 당신의 문제를 정말로 해결할 수있을 지 모르겠으므로 여기서 몇 가지 무지를 인정해야합니다. 그러나 은 MVC가 적합 할 것 같은 종류의 소리 인을 들려줍니다.

두 번째 ... ViewState 저장 및로드를 담당하는 메소드를 재정의 할 수 있습니다. 예를 들어 할 수있는 일 중 하나는 ViewState를 사용자에게 보내고 다시 게시 할 때보다는 ViewState를 Session으로 밀어 넣는 것입니다. 사용자 정의 코드를 여기에 쉽게 추가 할 수 있습니다.

제 3 ... 당신이 디자인의 일부를 재고하고 싶을 수도 있습니다. ViewState는 실제로 한 가지 용도로 사용됩니다. 사용자가 페이지를 렌더링 할 때 존재했던대로 페이지의 상태를 다시 만듭니다. 다른 페이지 또는 새로운 컨트롤 집합으로 이동하는 경우 왜 ViewState가 필요합니까? ViewState는 실제로 시작하는 해킹 일뿐입니다 ... 상태 비 저장 시스템 위에 상태를 유지하는 ASP.NET의 방식. (하지만 그것은 전체 토론이다.) 우리는 State 객체를 유지하는 주된 메커니즘 인 state를 유지하는 다른 메소드를 가지고있다. 그 대신에 브리 어쿠 붐 (Breaacrumb) 데이터를 저장하지 않으시겠습니까?

+0

"사용자가 브라우저에서"뒤로 "를 클릭하고 다른 링크를 클릭하면 탐색 경로가 오른쪽 페이지에서 나옵니다." 상태없는 시스템의 최상위에서 상태를 유지하는 것은 내가하려는 일입니다.새 탭에서 링크를 열고 몇 개의 링크를 따라 링크를 누른 다음 이전 탭으로 돌아가 거기에서 검색을 시작한다고 가정 해 보겠습니다. 이 데이터를 세션에 완전히 저장하면이 같은 시나리오를 이동 경로로 병합하는 것이 바람직하지 않습니다. – StriplingWarrior

0

쿠키를 사용할 것입니다. 성능상의 이유로 가능한 경우 HTTP 리디렉션을 피하고 ViewState는 사용자가 일반 링크가 아닌 양식을 제출하는 경우에만 작동합니다.

쿠키에서 사용자가 한 페이지에서 다른 페이지로 이동하는 경로를 보여주는 여러 경로 목록을 유지 관리하는 것과 같은 작업을 수행 할 수 있습니다. 어쩌면 사용자가 링크를 클릭 할 때 일부 JavaScript에 의해 쿼리 문자열로 적용되는 각 페이지마다 고유 한 ID를 설정하고 서버는 해당 ID와 쿠키의 과거 기록을 사용하여 쿠키에 대한 빵 부스러기를 렌더링하는 방법을 결정할 수 있습니다. 다음 페이지?

관련 문제