예를 들어 strID
, strName
및에 대한 매개 변수로 전달해야하는 세 가지 값이 있습니다 strDate
.
이 세 가지 매개 변수를에서 다른 페이지로 리디렉션하고 싶습니다 Response.Redirect()
. 누구나 올바른 쿼리 문자열을 제공 할 수 있습니까?
답변:
(다음은 Wikipedia 항목의 링크 된 섹션의 텍스트입니다.)
쿼리 문자열을 포함하는 일반적인 URL은 다음과 같습니다.
http://server/path/program?query_string
서버가 이러한 페이지에 대한 요청을 수신하면 프로그램을 실행하고 (구성된 경우) query_string을 변경하지 않고 프로그램에 전달합니다. 물음표는 구분 기호로 사용되며 쿼리 문자열의 일부가 아닙니다.
웹 페이지의 링크에는 쿼리 문자열이 포함 된 URL이있을 수 있지만 HTML은 웹 브라우저가 쿼리 문자열을 생성 할 수있는 세 가지 방법을 정의합니다.
쿼리 문자열의 주요 용도는 웹 양식이라고도하는 HTML 양식의 내용을 포함하는 것입니다. 특히 field1, field2, field3 필드가 포함 된 양식을 제출하면 필드의 내용이 다음과 같이 쿼리 문자열로 인코딩됩니다.
field1=value1&field2=value2&field3=value3...
field1=value1&field1=value2&field1=value3...
양식의 각 필드에 대해 쿼리 문자열에는 field = value 쌍이 포함됩니다. 웹 양식에는 사용자에게 표시되지 않는 필드가 포함될 수 있습니다. 이러한 필드는 양식이 제출 될 때 쿼리 문자열에 포함됩니다.
이 규칙은 W3C 권장 사항입니다. W3C는 앰퍼샌드를 엔티티 이스케이프하지 않고도 HTML 문서 내의 URL에서 application / x-www-form-urlencoded 쿼리 문자열을 허용하기 위해 모든 웹 서버에서 앰퍼샌드 구분 기호 [6]와 함께 세미콜론 구분 기호를 지원할 것을 권장합니다.
기술적으로 양식 콘텐츠는 양식 제출 방법이 GET 인 경우에만 쿼리 문자열로 인코딩됩니다. 제출 방법이 POST 인 경우 기본적으로 동일한 인코딩이 사용되지만 결과는 쿼리 문자열로 전송되지 않습니다. 즉, 양식의 작업 URL에 추가되지 않습니다. 오히려 문자열은 HTTP 요청의 본문으로 전송됩니다.
이렇게 해보세요.
Response.Redirect(String.Format("yourpage.aspx?strId={0}&strName={1}&strDate{2}", Server.UrlEncode(strId), Server.UrlEncode(strName),Server.UrlEncode(strDate)));
다음을 사용하여 수행 할 수 있습니다.
Response.Redirect("http://localhost/YourControllerName/ActionMethodName?querystring1=querystringvalue1&querystring2=querystringvalue2&querystring3=querystringvalue3");
AbsoluteUri를 사용하고 다음과 같이 얻을 수 있습니다.
string myURI = Request.Url.AbsoluteUri;
if (!WebSecurity.IsAuthenticated) {
Response.Redirect("~/Login?returnUrl="
+ Request.Url.AbsoluteUri );
그런 다음 로그인 후 :
var returnUrl = Request.QueryString["returnUrl"];
if(WebSecurity.Login(username,password,true)){
Context.RedirectLocal(returnUrl);
그것은 나를 위해 잘 작동합니다.