クエリ文字列で複数のパラメータを渡す方法


89

私は、私は例えばのためのパラメータとして渡す必要が3つの値を持っているstrIDstrNamestrDate

これらの3つのパラメータをの別のページにリダイレクトしたいのResponse.Redirect()ですが、誰かが正しいクエリ文字列を提供してくれますか?

回答:


111

クエリ文字列

(以下は、ウィキペディアのエントリのリンクされたセクションのテキストです。)

構造

クエリ文字列を含む一般的なURLは次のとおりです。

http://server/path/program?query_string

サーバーは、そのようなページの要求を受信すると、プログラムを実行し(そうするように構成されている場合)、query_stringを変更せずにプログラムに渡します。疑問符は区切り文字として使用され、クエリ文字列の一部ではありません。

Webページのリンクにはクエリ文字列を含むURLが含まれる場合がありますが、HTMLは、Webブラウザがクエリ文字列を生成する3つの方法を定義しています。

  • ...要素を介したWebフォーム
  • 構造を持つ要素のismap属性を介したサーバー側のイメージマップ
  • 現在非推奨の要素を介したインデックス付き検索

Webフォーム

クエリ文字列の主な用途は、Webフォームとも呼ばれるHTMLフォームのコンテンツを含めることです。特に、フィールドfield1、field2、field3を含むフォームが送信されると、フィールドのコンテンツは次のようにクエリ文字列としてエンコードされます。

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

  • クエリ文字列は、一連のフィールドと値のペアで構成されます。
  • 各ペア内で、フィールド名と値は等号で区切られます。値が空の文字列の場合、等号は省略できます。
  • 一連のペアは、アンパサンド「&」(またはHTMLに埋め込まれ、...によって生成されないURLの場合はセミコロン「;」)で区切られます。以下を参照してください。明確な標準はありませんが、ほとんどのWebフレームワークでは、複数の値を1つのフィールドに関連付けることができます。

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

フォームの各フィールドについて、クエリ文字列にはfield = valueのペアが含まれます。Webフォームには、ユーザーには表示されないフィールドが含まれる場合があります。これらのフィールドは、フォームが送信されるときにクエリ文字列に含まれます

この規則はW3C勧告です。W3Cは、すべてのWebサーバーがアンパサンド区切り文字[6]に加えてセミコロン区切り文字をサポートし、アンパサンドをエンティティエスケープすることなくHTMLドキュメント内のURLでapplication / x-www-form-urlencodedクエリ文字列を使用できるようにすることをお勧めします。

技術的には、フォームのコンテンツは、フォームの送信方法がGETの場合にのみクエリ文字列としてエンコードされます。送信方法がPOSTの場合、デフォルトで同じエンコーディングが使用されますが、結果はクエリ文字列として送信されません。つまり、フォームのアクションURLに追加されません。むしろ、文字列はHTTPリクエストの本文として送信されます。


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

リダイレクトする前に:

string queryString = Request.QueryString.ToString();

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

15

このようにしてみてください。うまくいくはずです。

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


5

これは、次を使用して実行できます。

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

1
@DalijaPrasnikarこの「リンク」はローカルホストを指すURLであり、回答の一部です。「ロボレビュー」はしないでください。
ElGavilan 2016年

1

私は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);

それは私にとってうまくいきます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.