Ho tre valori che devo passare come parametri per esempio, strID
, strName
e strDate
.
Voglio reindirizzare questi tre parametri a un'altra pagina in. Response.Redirect()
Qualcuno può fornirmi la stringa di query corretta?
Risposte:
(Di seguito è riportato il testo della sezione collegata alla voce di Wikipedia.)
Un tipico URL contenente una stringa di query è il seguente:
http://server/path/program?query_string
Quando un server riceve una richiesta per tale pagina, esegue un programma (se configurato per farlo), passando la query_string invariata al programma. Il punto interrogativo viene utilizzato come separatore e non fa parte della stringa della query.
Un collegamento in una pagina Web può avere un URL che contiene una stringa di query, tuttavia, l'HTML definisce tre modi in cui un browser Web può generare la stringa di query:
L'utilizzo principale delle stringhe di query consiste nel contenere il contenuto di un modulo HTML, noto anche come modulo web. In particolare, quando viene inviato un modulo contenente i campi campo1, campo2, campo3, il contenuto dei campi viene codificato come stringa di query come segue:
field1=value1&field2=value2&field3=value3...
field1=value1&field1=value2&field1=value3...
Per ogni campo del modulo, la stringa di query contiene una coppia campo = valore. I moduli Web possono includere campi che non sono visibili all'utente; questi campi sono inclusi nella stringa di query quando il modulo viene inviato
Questa convenzione è una raccomandazione del W3C. W3C raccomanda che tutti i server web supportino separatori punto e virgola oltre ai separatori e commerciale [6] per consentire stringhe di query application / x-www-form-urlencoded negli URL all'interno di documenti HTML senza dover eseguire l'escape di entità e commerciali.
Tecnicamente, il contenuto del modulo è codificato come stringa di query solo quando il metodo di invio del modulo è GET. La stessa codifica viene utilizzata per impostazione predefinita quando il metodo di invio è POST, ma il risultato non viene inviato come stringa di query, ovvero non viene aggiunto all'URL dell'azione del modulo. Piuttosto, la stringa viene inviata come corpo della richiesta HTTP.
Prova così, dovrebbe funzionare
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
Questo può essere fatto usando:
Response.Redirect("http://localhost/YourControllerName/ActionMethodName?querystring1=querystringvalue1&querystring2=querystringvalue2&querystring3=querystringvalue3");
Io uso AbsoluteUri e puoi ottenerlo in questo modo:
string myURI = Request.Url.AbsoluteUri;
if (!WebSecurity.IsAuthenticated) {
Response.Redirect("~/Login?returnUrl="
+ Request.Url.AbsoluteUri );
Quindi dopo aver effettuato l'accesso:
var returnUrl = Request.QueryString["returnUrl"];
if(WebSecurity.Login(username,password,true)){
Context.RedirectLocal(returnUrl);
Funziona bene per me.