web-dev-qa-db-ja.com

RedirectToActionがまったく機能しない

AccountControllerで、メソッドの最後に次のようになります。

RedirectToAction("EveryView", "Account");

同じコントローラーファイルに、次のメソッドがあります。

public ActionResult EveryView()
    {
        return View();
    }

ただし、このメソッドが呼び出されることはありません。 '{'にブレークポイントがあり、ヒットすることはありません。

15
petko_stankoski

うーん…コードがかなり些細なように見えるので、問題が何であるかを見る(または言う)のは難しいです。

おそらく少しのデバッグが役立つかもしれません!デフォルトのIndex()内に新しいTestControllerを作成してみてくださいActionResultこれを行います:

return RedirectToAction("EveryView", "Test");

次に、EveryView()ActionResultメソッドを作成し、ブレークポイントを設定します。

public ActionResult EveryView()
{
    return View();
}

http:// localhost/Test/Index を試してみるとどうなりますか?それは機能しますか?

それでも問題が解決しない場合は、ルートを調べて、問題を引き起こす可能性のある特別なルートが定義されていないことを確認することをお勧めします。

または、Global.asax内に次のメソッドを追加することもできます。

protected void Application_Error(object sender, EventArgs e)
{
    Exception ex = Server.GetLastError();
}

そして、未知のエラーをキャッチするためにラインにブレークポイントを設定します。

10
Vlince

'return'を入力しました。そうでない場合、リダイレクトされません。

return RedirectToAction("EveryView", "Account");

56
Bonanza

最近のプロジェクトでもこの問題が発生しました。コントローラが[Authorize]属性で装飾されていて、この時点ではユーザーがログインしていないため、リダイレクトされたアクションに[AllowAnonymous]を追加することで、最終的に解決しました。これがお役に立てば幸いです。

8
user2192287

私も同様の問題を抱えていました。関数からリダイレクト先の投稿属性[HttpPost]を削除しました。

1
ilans

この問題が発生しました。これは、追加したカスタムMustBeLoggedInフィルターが、user2192287と同様に、そのメソッドへのリダイレクトを許可していなかったためです。

これは、フィルターが私を最初のアクションにリダイレクトしていたことを意味しました。

これは、アカウントコントローラーにあったので、petko_stankoskiの問題であった可能性があります。

1
tekiegirl

Actionメソッドが呼び出されない場合は、メソッドがHttpPostに登録されているが、uがHttpGetリクエストを送信していることが原因である可能性があります。したがって、[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]を使用して、両方のリクエストを受け入れるメソッドを維持することをお勧めします。

0
Raj