Cara melewatkan beberapa parameter dalam string kueri

92

Saya memiliki tiga nilai yang harus saya teruskan sebagai parameter misalnya strID,, strNamedan strDate.

Saya ingin mengarahkan ketiga parameter ini ke halaman lain di Response.Redirect(). Adakah yang bisa memberi saya querystring yang benar?

pengguna42348
sumber

Jawaban:

113

Query_string

(Berikut adalah teks dari bagian tertaut dari entri Wikipedia.)

Struktur

URL tipikal yang berisi string kueri adalah sebagai berikut:

http://server/path/program?query_string

Ketika server menerima permintaan untuk halaman seperti itu, ia menjalankan program (jika dikonfigurasi untuk melakukannya), meneruskan query_string tidak berubah ke program. Tanda tanya digunakan sebagai pemisah dan bukan bagian dari string kueri.

Tautan di halaman web mungkin memiliki URL yang berisi string kueri, namun, HTML mendefinisikan tiga cara browser web dapat menghasilkan string kueri:

  • formulir web melalui ... elemen
  • peta gambar sisi server melalui atribut ismap pada elemen dengan konstruksi
  • pencarian yang diindeks melalui elemen yang sekarang tidak digunakan lagi

Formulir web

Penggunaan utama string kueri adalah untuk memuat konten formulir HTML, juga dikenal sebagai formulir web. Secara khusus, ketika formulir yang berisi bidang bidang1, bidang2, bidang3 dikirimkan, konten bidang dikodekan sebagai string kueri sebagai berikut:

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

  • String kueri terdiri dari serangkaian pasangan nilai bidang.
  • Dalam setiap pasangan, nama dan nilai bidang dipisahkan oleh tanda sama dengan. Tanda sama dengan dapat dihilangkan jika nilainya berupa string kosong.
  • Rangkaian pasangan dipisahkan oleh ampersand, '&' (atau titik koma, ';' untuk URL yang disematkan dalam HTML dan tidak dibuat oleh ...; lihat di bawah). Meskipun tidak ada standar yang pasti, sebagian besar kerangka kerja web memungkinkan beberapa nilai dikaitkan dengan satu bidang:

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

Untuk setiap bidang formulir, string kueri berisi pasangan bidang = nilai. Formulir web mungkin menyertakan bidang yang tidak terlihat oleh pengguna; bidang-bidang ini disertakan dalam string kueri saat formulir dikirimkan

Konvensi ini adalah rekomendasi W3C. W3C merekomendasikan bahwa semua server web mendukung pemisah titik koma selain ampersand pemisah [6] untuk mengizinkan aplikasi / x-www-form-urlencoded query string dalam URL dalam dokumen HTML tanpa harus keluar dari ampersand entitas.

Secara teknis, konten formulir hanya dikodekan sebagai string kueri saat metode pengiriman formulir adalah GET. Pengkodean yang sama digunakan secara default saat metode pengiriman adalah POST, tetapi hasilnya tidak dikirim sebagai string kueri, yaitu tidak ditambahkan ke URL tindakan formulir. Sebaliknya, string dikirim sebagai badan permintaan HTTP.

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

sebelum Anda mengalihkan:

string queryString = Request.QueryString.ToString();

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

Coba seperti ini. Seharusnya berhasil

Response.Redirect(String.Format("yourpage.aspx?strId={0}&strName={1}&strDate{2}", Server.UrlEncode(strId), Server.UrlEncode(strName),Server.UrlEncode(strDate)));
Ankush Dubey
sumber
8
~mypage.aspx?strID=x&strName=y&strDate=z
Adam Ralph
sumber
5

Ini dapat dilakukan dengan menggunakan:

Response.Redirect("http://localhost/YourControllerName/ActionMethodName?querystring1=querystringvalue1&querystring2=querystringvalue2&querystring3=querystringvalue3");
HariPrasad
sumber
1
@DalijaPrasnikar "link" ini adalah url yang menunjuk ke localhost dan merupakan bagian dari jawabannya. Tolong jangan "review-robo."
ElGavilan
1

Saya menggunakan AbsoluteUri dan Anda bisa mendapatkannya seperti ini:

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

Kemudian setelah Anda login:

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

Ini bekerja dengan baik untuk saya.

Thomas Fonseca
sumber