Cách chuyển nhiều tham số trong một chuỗi truy vấn


89

Tôi có ba giá trị mà tôi phải chuyển làm tham số cho ví dụ strID, strNamestrDate.

Tôi muốn chuyển hướng ba tham số này đến một trang khác trong Response.Redirect(). Có ai có thể cung cấp cho tôi chuỗi truy vấn chính xác không?

Câu trả lời:


111

Chuỗi truy vấn

(Sau đây là văn bản của phần được liên kết của mục nhập Wikipedia.)

Kết cấu

Một URL điển hình có chứa một chuỗi truy vấn như sau:

http://server/path/program?query_string

Khi một máy chủ nhận được yêu cầu cho một trang như vậy, nó sẽ chạy một chương trình (nếu được cấu hình để làm như vậy), truyền query_string không thay đổi cho chương trình. Dấu chấm hỏi được sử dụng làm dấu phân tách và không phải là một phần của chuỗi truy vấn.

Một liên kết trong trang web có thể có URL chứa chuỗi truy vấn, tuy nhiên, HTML xác định ba cách trình duyệt web có thể tạo chuỗi truy vấn:

  • một biểu mẫu web thông qua phần tử ...
  • bản đồ hình ảnh phía máy chủ thông qua thuộc tính ismap trên phần tử có cấu trúc
  • một tìm kiếm được lập chỉ mục thông qua phần tử hiện không dùng nữa

Biểu mẫu web

Công dụng chính của chuỗi truy vấn là chứa nội dung của một biểu mẫu HTML, còn được gọi là biểu mẫu web. Đặc biệt, khi một biểu mẫu chứa các trường field1, field2, field3 được gửi, nội dung của các trường được mã hóa dưới dạng chuỗi truy vấn như sau:

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

  • Chuỗi truy vấn bao gồm một chuỗi các cặp giá trị trường.
  • Trong mỗi cặp, tên trường và giá trị được phân tách bằng dấu bằng. Dấu bằng có thể bị bỏ qua nếu giá trị là một chuỗi trống.
  • Chuỗi các cặp được phân tách bằng dấu và '&' (hoặc dấu chấm phẩy, ';' đối với các URL được nhúng trong HTML và không được tạo bởi ...; xem bên dưới). Mặc dù không có tiêu chuẩn cuối cùng, nhưng hầu hết các khuôn khổ web đều cho phép nhiều giá trị được liên kết với một trường duy nhất:

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

Đối với mỗi trường của biểu mẫu, chuỗi truy vấn chứa một cặp trường = giá trị. Biểu mẫu web có thể bao gồm các trường không hiển thị cho người dùng; các trường này được bao gồm trong chuỗi truy vấn khi biểu mẫu được gửi

Công ước này là một khuyến nghị của W3C. W3C khuyến nghị rằng tất cả các máy chủ web hỗ trợ dấu chấm phẩy phân tách ngoài dấu và dấu phân tách [6] để cho phép các chuỗi truy vấn ứng dụng / x-www-form-urlencoded trong URL trong tài liệu HTML mà không cần phải ký hiệu thoát thực thể.

Về mặt kỹ thuật, nội dung biểu mẫu chỉ được mã hóa dưới dạng chuỗi truy vấn khi phương thức gửi biểu mẫu là GET. Mã hóa tương tự được sử dụng theo mặc định khi phương thức gửi là POST, nhưng kết quả không được gửi dưới dạng chuỗi truy vấn, nghĩa là không được thêm vào URL hành động của biểu mẫu. Thay vào đó, chuỗi được gửi dưới dạng phần thân của yêu cầu HTTP.


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

trước khi bạn chuyển hướng:

string queryString = Request.QueryString.ToString();

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

15

Hãy thử như thế này, nó sẽ hoạt động

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


5

Điều này có thể được thực hiện bằng cách sử dụng:

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

1
@DalijaPrasnikar "liên kết" này là một url trỏ đến localhost và là một phần của câu trả lời. Vui lòng không "đánh giá bằng máy".
ElGavilan

1

Tôi sử dụng AbsoluteUri và bạn có thể nhận được nó như sau:

string myURI = Request.Url.AbsoluteUri;
 if (!WebSecurity.IsAuthenticated) {
        Response.Redirect("~/Login?returnUrl="
            + Request.Url.AbsoluteUri );

Sau đó, sau khi bạn đăng nhập:

var returnUrl = Request.QueryString["returnUrl"];
 if(WebSecurity.Login(username,password,true)){
                Context.RedirectLocal(returnUrl);

Nó hoạt động tốt cho tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.