2012-11-06 2 views
1

에 URL에서 전체 QueryString을 얻기 : 나는 그가에 로그인하기 전에 있던 QueryString 그것은 다시 페이지로 사용자 Redirect의 내용을 사용나는 다음과 같은 형식의 URL이 ASP.NET

http://www.mysite.com/login.aspx?ref=~/Module/MyPage.aspx?par=1&par2=hello&par3=7 

을 . 페이지의 상태도 유지하려면 QueryString에 매개 변수가 필요합니다. 매개 변수의 수는 PageLogin을 호출하는 상태에 따라 달라집니다.

ref 뒤에 URL의 모든 내용을 redirectURL 변수에 저장하려고한다고 가정 해 봅시다. 나는 시도 :

redirectURL = Request.QueryString("ref") // "~/Module/MyPage.aspx?par=1" 

ref 후 모든 것을 얻을 수 있지만 (포함)을 & 후 모든 것을 무시합니다. 내가 사용하는 경우는 모든 것을 얻는다

redirectURL =Request.Url.Query // "ref=~/Module/MyPage.aspx?par=1&par2=hello&par3=7" 

, ref이 포함되어 있습니다. 내 목표를 달성하기 위해서는 redirectURL에서 처음 4자를 제거해야합니다. 하지만이 솔루션은 약간 "강제"라고 생각하며이 작업을 수행하는 일부 ASP.NET 기능이 있어야합니다.

답변

1

&의 추가 쿼리 문자열 인수를 만들 수 있습니다.

매개 변수의 값을 쿼리 문자열에 넣기 전에 이스케이프 처리해야합니다.
&%26으로 바꿉니다.
이렇게하려면 Uri.EscapeDataString()으로 전화하십시오.

Request.QueryString에서 속성을 가져 오면 자동으로 디코딩됩니다.

1

URL에 전달하기 전에 "~/Module/MyPage.aspx?par=1&par2=hello&par3=7"인코딩을 고려하십시오.

예 :

String MyURL = "http://www.mysite.com/login.aspx?ref=" + 
       Server.UrlEncode("~/Module/MyPage.aspx?par=1&par2=hello&par3=7"); 

그리고, 당신은 사용 redirectURL를 얻을 수 있습니다 : 당신의 URL에

String redirectURL = Request.QueryString("ref"); 
+3

아니요. 'Request.QueryString'이 당신을 위해 디코딩합니다. – SLaks

+0

@ SLaks 지적 해 주셔서 감사합니다. –

관련 문제