web-dev-qa-db-ja.com

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

strIDstrName、およびstrDateなどのパラメーターとして渡す必要がある3つの値があります。

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

76
user42348

クエリ文字列

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

構造

クエリ文字列を含む一般的な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フレームワークでは、単一のフィールドに複数の値を関連付けることができます。

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

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

この規則はW3Cの推奨事項です。 W3Cは、すべてのWebサーバーがアンパサンドセパレーターに加えてセミコロンセパレーターをサポートすることを推奨します[6]。

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

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

リダイレクトする前に:

string queryString = Request.QueryString.ToString();

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

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

Response.Redirect(String.Format("yourpage.aspx?strId={0}&strName={1}&strDate{2}", Server.UrlEncode(strId), Server.UrlEncode(strName),Server.UrlEncode(strDate)));
14
Ankush Dubey
~mypage.aspx?strID=x&strName=y&strDate=z
7
Adam Ralph

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

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

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

それは私のためにうまく機能します。

1
Thomas Fonseca