0

ユーザーが認証済みページにアクセスしようとすると、ログオン ページにリダイレクトされます。ログオン アクションは次のとおりです。

コントローラ アクション

 [HttpPost]
  public ActionResult LogOn(LogOnModel model, string returnUrl)
  {
    //Authentication codes goes here .......
  }

ログオン ビュー:

  @using (Html.BeginForm("LogOn", "Account", FormMethod.Post, new {  @class = "jmenu" }))
   {
     // Form for login codes goes here......
  }

問題: LogOn View で Html.BeginForm() にパラメーターを入れなかった場合、思い通りに動作します。ログイン後に、ユーザーが認証のためにログインにリダイレクトされるページにページがリダイレクトされます。しかし、上記のようにパラメーターを渡すと、ログイン後にホームページにリダイレクトされます。ここでは、returnUrl が LogOn アクションに渡されていないことが原因である可能性があります。LogOn アクションの Html.BeginForm で returnUrl パラメータを渡すにはどうすればよいですか。または、ビューを変更せずに LogOn アクションを変更して、他のビューのコードを変更する必要がないようにすることは可能ですか? 御時間ありがとうございます...

4

2 に答える 2

0

アクションで使用Request.UrlReferrerして、最後のリクエストのURLを取得できます。

于 2012-07-25T09:08:20.497 に答える
0

フォームの一部としてリターン URL を定義する必要があります。注意すべきことの 1 つは、常に URL リファラーに依存できるとは限らないことです。場合によっては、null になることもあります。

@{
    string url = "";
    if (ViewContext.HttpContext.Request.UrlReferrer != null)
    {
        url = ViewContext.HttpContext.Request.UrlReferrer.PathAndQuery;
    } 
}

@using (Html.BeginForm("Logon", "Account", new { model = this.Model, returnUrl = url }))
{
}
于 2012-07-25T09:14:23.273 に答える