Bir sorgu dizesinde birden çok parametre nasıl iletilir


92

Örneğin strID, strNameve için parametre olarak geçirmem gereken üç değerim var strDate.

Bu üç parametreyi başka bir sayfaya yönlendirmek istiyorum. Response.Redirect()Herhangi biri bana doğru sorgu dizesini sağlayabilir mi?

Yanıtlar:


113

Query_string

(Wikipedia girişinin bağlantılı bölümünün metni aşağıdadır.)

Yapısı

Bir sorgu dizesi içeren tipik bir URL aşağıdaki gibidir:

http://server/path/program?query_string

Bir sunucu böyle bir sayfa için bir istek aldığında, bir programı çalıştırır (bunu yapacak şekilde yapılandırılmışsa), programa query_string'i değiştirmeden iletir. Soru işareti ayırıcı olarak kullanılır ve sorgu dizesinin bir parçası değildir.

Web sayfasındaki bir bağlantı, sorgu dizesi içeren bir URL'ye sahip olabilir, ancak HTML, bir web tarayıcısının sorgu dizesini oluşturabileceği üç yolu tanımlar:

  • ... öğesi aracılığıyla bir web formu
  • bir yapıya sahip eleman üzerindeki ismap niteliği aracılığıyla sunucu tarafı bir görüntü haritası
  • artık kullanımdan kaldırılmış öğe aracılığıyla dizine eklenen bir arama

Web formları

Sorgu dizelerinin ana kullanımı, web formu olarak da bilinen bir HTML formunun içeriğini içermektir. Özellikle, alan1, alan2, alan3 alanlarını içeren bir form gönderildiğinde, alanların içeriği aşağıdaki gibi bir sorgu dizesi olarak kodlanır:

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

  • Sorgu dizesi bir dizi alan-değer çiftinden oluşur.
  • Her çiftin içinde, alan adı ve değeri bir eşittir işaretiyle ayrılır. Değer boş bir dizeyse eşittir işareti atlanabilir.
  • Çiftler dizisi, HTML'ye gömülü ve bir ... tarafından oluşturulmayan URL'ler için "&" (veya noktalı virgül ";" ile ayrılır; aşağıya bakın). Kesin bir standart olmamakla birlikte, çoğu web çerçevesi birden çok değerin tek bir alanla ilişkilendirilmesine izin verir:

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

Formun her alanı için, sorgu dizesi bir çift alan = değer içerir. Web formları, kullanıcı tarafından görülemeyen alanlar içerebilir; bu alanlar, form gönderildiğinde sorgu dizesine dahil edilir

Bu kural bir W3C önerisidir. W3C, HTML belgelerindeki URL'lerde "ve işareti" kaçışına gerek kalmadan uygulama / x-www-form-urlencoded sorgu dizelerine izin vermek için tüm web sunucularının "ve" ayırıcılara [6] ek olarak noktalı virgül ayırıcıları desteklemesini önerir.

Teknik olarak, form içeriği yalnızca form gönderme yöntemi GET olduğunda bir sorgu dizesi olarak kodlanır. Gönderme yöntemi POST olduğunda aynı kodlama varsayılan olarak kullanılır, ancak sonuç bir sorgu dizesi olarak gönderilmez, yani formun eylem URL'sine eklenmez. Aksine, dize, HTTP isteğinin gövdesi olarak gönderilir.


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

yönlendirmeden önce:

string queryString = Request.QueryString.ToString();

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

15

Böyle dene, çalışmalı

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


5

Bu, aşağıdakiler kullanılarak yapılabilir:

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

1
@DalijaPrasnikar Bu "bağlantı" localhost'u gösteren bir url'dir ve cevabın bir parçasıdır. Lütfen "robo-inceleme" yapmayın.
ElGavilan

1

AbsoluteUri kullanıyorum ve bunu şu şekilde elde edebilirsiniz:

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

Ardından giriş yaptıktan sonra:

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

Benim için iyi çalışıyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.