Örneğin strID
, strName
ve 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?
Örneğin strID
, strName
ve 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:
(Wikipedia girişinin bağlantılı bölümünün metni aşağıdadır.)
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:
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...
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.
Query String: ?strID=XXXX&strName=yyyy&strDate=zzzzz
yönlendirmeden önce:
string queryString = Request.QueryString.ToString();
Response.Redirect("page.aspx?"+queryString);
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)));
~mypage.aspx?strID=x&strName=y&strDate=z
Bu, aşağıdakiler kullanılarak yapılabilir:
Response.Redirect("http://localhost/YourControllerName/ActionMethodName?querystring1=querystringvalue1&querystring2=querystringvalue2&querystring3=querystringvalue3");
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.