2010-08-19 3 views
3

페이지의 쿼리 문자열을 제거하고 자체로 리디렉션하지만 어떤 방식 으로든 쿼리 문자열 데이터를 보존 할 수있는 방법을 찾고 있습니다. 예 : http://www.test.de/somepage.aspx?id=abchttp://www.test.de/somepage.aspx으로 리디렉션해야합니다. 리디렉션 후에도 원래 전달 된 매개 변수를 가져올 수 있기를 원합니다. 브라우저의 기록에 http://www.test.de/somepage.aspx?id=abc을 갖고 싶지 않습니다.ASPX : QueryString을 리디렉션하고 제거하지만 브라우저에서 기록을 만들지 마십시오.

  • Response.Redirect()을 : 내가 지금까지 시도 무엇

    은 브라우저 기록을 작성하지 않고 적절한 리디렉션을 수행하지만 매개 변수를 구명 할 수 없습니다.

  • Server.Transfer : 매개 변수는 그대로 유지되지만 브라우저의 URL은 변경되지 않습니다.

  • 즉석에서 클라이언트 양식을 작성하고 onload에 제출하십시오. 작동, querystring이 없어졌습니다. 매개 변수는 Request.Form을 통해 액세스 할 수 있지만 브라우저에 히스토리 항목을 작성합니다.

나는 현재 생각할 수있는 유일한 방법은, 다음 리디렉션, 세션의 매개 변수를 저장 거기에서 그들을 선택하는 것입니다. 하지만 또 다른 해결책이있을 수 있습니까?

+1

는 소리 - 세션에서 QS를 저장하고'Response.Redirect를 (URL)를 수행;'. 세션을 사용하고 싶지 않은 이유가 있습니까? –

+0

주된 이유는 처리의 복잡성 때문입니다. 동일한 페이지를 보여주는 두 개의 브라우저 탭을 열어서 한 세션을 공유 할 수 있습니다. 처리 시간이 다른 경우 다른 하나를 덮어 쓸 가능성이 큽니다. – Krumelur

답변

2

피트가 언급 한 바와 같이, 당신은 세션에서 쿼리 문자열 매개 변수를 저장 한 다음에 Response.Redirect를 위해 호출 할 수 두 번째 페이지로 리디렉션

Session["id"] = Request["id"]; 
Session["param2"] = Request["param2"]; 
Session["param3"] = Request["param3"]; 
.... 
Response.Redirect(sameurl); 

두 번째로드 페이지에서 쿼리 문자열 값이 사라 졌는지 확인합니다. 그렇다면 쿼리 문자열에서 값을 읽는 대신 세션에서 값을 읽으십시오. 이미 가장 좋은 대답을 가지고있는 것처럼

id = Session["id"]; 
param2 = Session["param2"]; 
param3 = Session["param3"]; 
... 
0

왜 이렇게하고 싶은지에 관계없이 가장 좋은 방법은 매개 변수를 세션 상태에 저장하는 것입니다. 세션 상태는 신뢰할 수없는 응용 프로그램으로 연결되기 때문에 최소한으로 사용해야합니다. 예 : 사용자가 북마크를 저장하거나 세션이 시간 초과 된 후 새로 고침을 클릭하면 어떻게됩니까? 이러한 이유로, 나는이 접근법에 반대 할 것을 권합니다.

이 같은 예를 들어, 당신은 더 친화적 볼 필요로하는 매개 변수를 만들기 위해 재 작성 URL을 사용 고려할 수 : http://www.test.de/somepage/abc

+0

그래, 그거 알아.하지만 내 문제는 표준 AJAX 문제 야. "http://www.test.de/somepage/abc"또는 "http://www.test.de?somepage=abc"로 이동 한 다음 XHR을 사용하여 끝낼 다른 페이지의 내용을 표시하십시오 "http://www.test.de/somepage/abc#somepage=def"또는 "http://www.test.de?somepage=abc#somepage=def". 그건 제가 피하고 싶습니다. Stil 사용자는 익숙한 URL 쿼리 문법을 사용하여 페이지로 바로 이동할 수 있습니다. 르네 – Krumelur

관련 문제