-2

友人がWeb開発をしているのを見ましたが、彼のコードの1つがResponse.Redirectです。

の使用法は何ですか、それはページの名前ではHome?=ありませんか?誰かが私のこの質問に答えてくれませんか、そしてそれを非常によく説明してください。LogIn.aspxHome?=

String url = "LogIn.aspx?Home?=" + Username;
Response.Redirect(url);
4

2 に答える 2

3

アップデート

すべてのコメントから作業すると、答えは次のようになります。クエリ文字列パラメータ名(キー)は、実際"Home?"にはだけでなく、です"Home"。以下の詳細(技術的に正しくないコード生成の理由を含む)。

Homeがある場合、なぜまだリダイレクトしているのですか?=?

リダイレクトすべきではない理由がないためです。許可されたURLは無効です(?予約文字であり、クエリ文字列にエンコードされていないように表示できないため?、URLの2番目は正しくありません)が、ブラウザは無効なURLを処理するのにかなり満足しています。

これとは別に、UsernameすでにURLエンコードされていない限り、の内容によってはURLに他のエラーが発生する可能性がありますUsername。(すべてのクエリ文字列パラメータはURLエンコードされている必要があります。.Netでは、これを使用しHttpUtility.UrlEncodeます。)

コメントを再確認してください。

私が意味するのは、なぜ彼がホームを使用するのかわからないということですか?=そしてそれの使用は何ですか

それは役に立たない、それはエラーです。彼はおそらく単に意味していました (いいえ、明らかにそうではありません、あなたの次のコメントの後に以下を参照してください)

String url = "LogIn.aspx?Home=" + Username;

...より正確には:

String url = "LogIn.aspx?Home=" + HttpUtility.UrlEncode(Username);

(技術的には、キーと値の両方をURLエンコードする必要があります"Home"Username、のURLエンコード形式は"Home"である"Home"ため、キーを呼び出さなくても問題を解決できます。キーに何かが必要な場合は当てはまりません。その中のURL予約文字の。)

完全にこのコードで構成されているコメントを再確認してください。

string retrieveValue;
protected void Page_Load(object sender, EventArgs e) {
    this.lblUsername.Text = Request.QueryString["Home?";
    retrieveValue = this.lblUsername.Text;
}

上記の構文エラーが修正されたと仮定すると(3行目で欠落)、彼は実際にキー(パラメーター名)として]使用しているように見えます。"Home?"つまり、リダイレクトは次のようになります。

String url = "LogIn.aspx?" + HttpUtility.UrlEncode("Home?") + "=" + HttpUtility.UrlEncode(Username);

...キーに予約文字が含まれているため(?)。これは受信時にデコードされるため、上記のコードが機能するはずです。

ほとんどのブラウザでは、おそらく彼が指定した文字列を使用できないことに注意してください。それは正しくありませんが、ある意味でブラウザはおそらく許可します。

于 2012-07-25T08:54:20.437 に答える
0

TJがカバーしたエラーに関係なく、彼が意図したのは、訪問者のユーザー名に設定された変数「Home」を使用してページLogIn.aspxをロードすることでした。これにより、ページで変数を「GET」して使用できるようになります。基本的に、あるページから別のページにデータを送信する方法です。

于 2012-07-25T09:02:47.773 に答える