私は、私は例えばのためのパラメータとして渡す必要が3つの値を持っているstrID
、strName
とstrDate
。
これらの3つのパラメータをの別のページにリダイレクトしたいのResponse.Redirect()
ですが、誰かが正しいクエリ文字列を提供してくれますか?
回答:
(以下は、ウィキペディアのエントリのリンクされたセクションのテキストです。)
クエリ文字列を含む一般的なURLは次のとおりです。
http://server/path/program?query_string
サーバーは、そのようなページの要求を受信すると、プログラムを実行し(そうするように構成されている場合)、query_stringを変更せずにプログラムに渡します。疑問符は区切り文字として使用され、クエリ文字列の一部ではありません。
Webページのリンクにはクエリ文字列を含むURLが含まれる場合がありますが、HTMLは、Webブラウザがクエリ文字列を生成する3つの方法を定義しています。
クエリ文字列の主な用途は、Webフォームとも呼ばれるHTMLフォームのコンテンツを含めることです。特に、フィールドfield1、field2、field3を含むフォームが送信されると、フィールドのコンテンツは次のようにクエリ文字列としてエンコードされます。
field1=value1&field2=value2&field3=value3...
field1=value1&field1=value2&field1=value3...
フォームの各フィールドについて、クエリ文字列にはfield = valueのペアが含まれます。Webフォームには、ユーザーには表示されないフィールドが含まれる場合があります。これらのフィールドは、フォームが送信されるときにクエリ文字列に含まれます
この規則はW3C勧告です。W3Cは、すべてのWebサーバーがアンパサンド区切り文字[6]に加えてセミコロン区切り文字をサポートし、アンパサンドをエンティティエスケープすることなくHTMLドキュメント内のURLでapplication / x-www-form-urlencodedクエリ文字列を使用できるようにすることをお勧めします。
技術的には、フォームのコンテンツは、フォームの送信方法がGETの場合にのみクエリ文字列としてエンコードされます。送信方法がPOSTの場合、デフォルトで同じエンコーディングが使用されますが、結果はクエリ文字列として送信されません。つまり、フォームのアクションURLに追加されません。むしろ、文字列はHTTPリクエストの本文として送信されます。
このようにしてみてください。うまくいくはずです。
Response.Redirect(String.Format("yourpage.aspx?strId={0}&strName={1}&strDate{2}", Server.UrlEncode(strId), Server.UrlEncode(strName),Server.UrlEncode(strDate)));
これは、次を使用して実行できます。
Response.Redirect("http://localhost/YourControllerName/ActionMethodName?querystring1=querystringvalue1&querystring2=querystringvalue2&querystring3=querystringvalue3");
私はAbsoluteUriを使用していますが、次のように取得できます。
string myURI = Request.Url.AbsoluteUri;
if (!WebSecurity.IsAuthenticated) {
Response.Redirect("~/Login?returnUrl="
+ Request.Url.AbsoluteUri );
次に、ログインした後:
var returnUrl = Request.QueryString["returnUrl"];
if(WebSecurity.Login(username,password,true)){
Context.RedirectLocal(returnUrl);
それは私にとってうまくいきます。