0

次のログオンアクションがあります[HttpPost]

     public ActionResult LogOn(LogOnModel user, string returnUrl)
        {
  if (!String.IsNullOrEmpty(returnUrl))
                                {
                    return Redirect(returnUrl);
                }
                else
                {
                    return RedirectToAction("Index", "Home");
                }
}

私のreturnUrlがnullである場合..どのボディでも教えてもらえますか。なぜ私のreturnURLがnullであるのか

4

3 に答える 3

2

私はこれに対する非常に修正された修正を書きました。基本的に、ルート値を追加するには、次のようにHtml.BeginFormに追加する必要があります。

Html.BeginForm("LogOn", 
    "Account", 
    new { returnUrl = Request.QueryString["ReturnUrl"] })

詳細については、http://blog.nicholasrogoff.com/2013/12/10/net-mvc-3-logon-does-not-redirect-out-the-boxquick-fix/を参照してください。

于 2013-12-11T08:24:34.323 に答える
1

これは、コントローラーアクションメソッドの呼び出し方法によって異なります。

  1. 以下のようなURLがある場合 http://www.somedomain.com/LogOn/LogOn?returnUrl=user/userList

    この呼び出しでreturnUrlは、ActionMethod(のパラメータがパラメータLogOn に置き換えられquerystringますreturnUrl

  2. を使用している場合は、認証を検証しform authenticationた属性があります。[Authorize]ユーザーが認証されていない場合は、要求されたページURLが含まれるLogInページにリダイレクトされます。querystring parameter returnUrl

この時点で、returnUrlコントローラーのアクションメソッドパラメーターの値も取得します。パラメーターの値は次のreturnUrlようになります。requested page Url

お役に立てれば!

于 2012-11-07T07:13:15.977 に答える
0

これは、誰がこのメソッドを呼び出しているか、およびこのパラメーターがPOSTリクエストで提供されているかどうかによって異なります。

たとえば、ユーザーが[Autorize]属性で装飾されたコントローラーアクションにアクセスしようとし、認証されていない場合、フレームワークは自動的にLogOnアクション(フォームをレンダリングするアクションであり、を含むアクションではない[HttpPost])にリダイレクトし、パラメーターを提供しreturnUrlます。

次に、ログオンフォームに非表示のフィールドを設定して、その値を保持します。これにより、ユーザーが資格情報を入力してフォームをLogOnアクションに送信すると、ログインに成功すると、最初に要求されたページにリダイレクトされます。

于 2012-11-07T06:50:05.160 に答える