0

次のコードを使用して参照 URL を取得しようとしています。ページへのリダイレクトが機能していません。問題を解決するのを手伝ってください。

  if (!Page.IsPostBack)
    {
        ViewState["PreviousPage"] = Request.ServerVariables["HTTP_REFERER"];
    }

  protected void btnLogin_Click(object sender, EventArgs e)
  {
    if (ViewState["PreviousPage"] != null)
       {
          Response.Redirect(ViewState["PreviousPage"].ToString());
       }
  }
4

4 に答える 4

1

ここで車輪を再構築しているように思えます。

デフォルトでは、フォーム認証を使用してこれを行う組み込みの .NET 方法があります。アプリケーションのページに自動的にリダイレクトするクエリ文字列を取得します。ログインしていないときにページにアクセスすると、アプリはログインする前に移動したかった場所を記憶し、認証時にそこに送信します.

それがあなたがやろうとしていることですか?

于 2013-07-24T19:34:20.137 に答える
0

ここで起こりうることがいくつかあります。

ログインページに直接アクセスしている場合、リファラーは常に null になります。したがって、コードがそれを処理できることを確認してください。

それがif (!Page.IsPostBack)Page_Init にある場合、ポストバック中に問題がViewState["PreviousPage"] = Request.ServerVariables["HTTP_REFERER"];持続しない可能性が最も高いですViewState

チェックを に移動するか、 にPage_Load追加ViewState.SetDirty(true);することで修正できますPage_InitComplete

もう 1 つの考えられる問題は、一部のブラウザーHTTP_REFERERがプライバシー上の理由からヘッダーを削除することです。繰り返しますが、コードが null の値を処理することを確認してください。

于 2013-07-24T20:44:07.580 に答える
0

これはうまくいくかもしれません

Response.Redirect((ViewState["PreviousPage"]+".aspx"));

于 2013-07-24T19:27:46.697 に答える