쿼리 문자열에서 여러 매개 변수를 전달하는 방법


90

예를 들어 strID, strName및에 대한 매개 변수로 전달해야하는 세 가지 값이 있습니다 strDate.

이 세 가지 매개 변수를에서 다른 페이지로 리디렉션하고 싶습니다 Response.Redirect(). 누구나 올바른 쿼리 문자열을 제공 할 수 있습니까?

답변:


113

Query_string

(다음은 Wikipedia 항목의 링크 된 섹션의 텍스트입니다.)

구조

쿼리 문자열을 포함하는 일반적인 URL은 다음과 같습니다.

http://server/path/program?query_string

서버가 이러한 페이지에 대한 요청을 수신하면 프로그램을 실행하고 (구성된 경우) query_string을 변경하지 않고 프로그램에 전달합니다. 물음표는 구분 기호로 사용되며 쿼리 문자열의 일부가 아닙니다.

웹 페이지의 링크에는 쿼리 문자열이 포함 된 URL이있을 수 있지만 HTML은 웹 브라우저가 쿼리 문자열을 생성 할 수있는 세 가지 방법을 정의합니다.

  • ... 요소를 통한 웹 양식
  • 구성이있는 요소의 ismap 속성을 통한 서버 측 이미지 맵
  • 현재 사용되지 않는 요소를 통한 색인 검색

웹 양식

쿼리 문자열의 주요 용도는 웹 양식이라고도하는 HTML 양식의 내용을 포함하는 것입니다. 특히 field1, field2, field3 필드가 포함 된 양식을 제출하면 필드의 내용이 다음과 같이 쿼리 문자열로 인코딩됩니다.

field1=value1&field2=value2&field3=value3...

  • 쿼리 문자열은 일련의 필드-값 쌍으로 구성됩니다.
  • 각 쌍 내에서 필드 이름과 값은 등호로 구분됩니다. 값이 빈 문자열이면 등호를 생략 할 수 있습니다.
  • 일련의 쌍은 앰퍼샌드 '&'(또는 ...로 생성되지 않은 HTML에 포함 된 URL의 경우 세미콜론, ';', 아래 참조)로 구분됩니다. 명확한 표준은 없지만 대부분의 웹 프레임 워크에서는 여러 값을 단일 필드에 연결할 수 있습니다.

field1=value1&field1=value2&field1=value3...

양식의 각 필드에 대해 쿼리 문자열에는 field = value 쌍이 포함됩니다. 웹 양식에는 사용자에게 표시되지 않는 필드가 포함될 수 있습니다. 이러한 필드는 양식이 제출 될 때 쿼리 문자열에 포함됩니다.

이 규칙은 W3C 권장 사항입니다. W3C는 앰퍼샌드를 엔티티 이스케이프하지 않고도 HTML 문서 내의 URL에서 application / x-www-form-urlencoded 쿼리 문자열을 허용하기 위해 모든 웹 서버에서 앰퍼샌드 구분 기호 [6]와 함께 세미콜론 구분 기호를 지원할 것을 권장합니다.

기술적으로 양식 콘텐츠는 양식 제출 방법이 GET 인 경우에만 쿼리 문자열로 인코딩됩니다. 제출 방법이 POST 인 경우 기본적으로 동일한 인코딩이 사용되지만 결과는 쿼리 문자열로 전송되지 않습니다. 즉, 양식의 작업 URL에 추가되지 않습니다. 오히려 문자열은 HTTP 요청의 본문으로 전송됩니다.


34
Query String: ?strID=XXXX&strName=yyyy&strDate=zzzzz

리디렉션하기 전에 :

string queryString = Request.QueryString.ToString();

Response.Redirect("page.aspx?"+queryString);

15

이렇게 해보세요.

Response.Redirect(String.Format("yourpage.aspx?strId={0}&strName={1}&strDate{2}", Server.UrlEncode(strId), Server.UrlEncode(strName),Server.UrlEncode(strDate)));


5

다음을 사용하여 수행 할 수 있습니다.

Response.Redirect("http://localhost/YourControllerName/ActionMethodName?querystring1=querystringvalue1&querystring2=querystringvalue2&querystring3=querystringvalue3");

1
@DalijaPrasnikar이 "링크"는 localhost를 가리키는 URL이며 답변의 일부입니다. "로보 검토"하지 마십시오.
ElGavilan

1

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);

그것은 나를 위해 잘 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.