web-dev-qa-db-ja.com

エリア間のRedirectToAction?

別のエリアの特定のアクション/コントローラーにリダイレクトする方法はありますか?

131
Jonathan

これを試しましたか?:

return RedirectToAction("action", "controller", new { area = "area" });
248
eu-ge-ne

あなたの答えは私に役立ちました。以下を追加したかっただけです。

あるエリアから別のエリアにリダイレクトしたい場合、上記のコードはうまく機能します。

また、1つのエリアから、エリアフォルダーにないコントローラー/ビュー(ほとんどの場合、フロントエンド)にリダイレクトする場合は、area = ""を指定できます。

つまり.

return RedirectToAction("action", "controller", new { area = "" });
39
Suhani Mody

ここでフォローアップをお願いします。それを理解する

return RedirectToAction("action", "area1/controller")

によっても表されます

return RedirectToAction("action", "controller", new { area = "area1" });

同じ表記を使用して、どのようにさらにエリアのネスティングにドリルダウンしますか?適切な表記法を使用することの大きな利点は、特にreSharperを使用すると、コントローラに戻って名前を変更する必要がある場合に、リファクタリングが適切に処理されることです。ミックスに追加の領域を追加し、それらを相互にネストすると、以前の表記は同等ではなくなります。

return RedirectToAction("action", "area1/area2/controller");

最初に見つけた場合は、質問を更新し続けます。


わかりましたので、答えは素晴らしいものではないと思いますが、再シャーパーとインテリセンスのある種の有効な着色を得るための最善の方法は次のとおりです:

return RedirectToAction("action","controller", new { area = "area1/area2" });

少なくともここでは、コントローラーをF12またはCtrlキーを押しながらクリックして、その上に移動することができます。名前を変更する必要がある場合、Resharperはそれを見つけます...しかし、定義された領域に変更を加えません...だからあなたの戦いを選んでください。

ほとんどの条件下では、リダイレクトを完全に使用することを避けることができます...しかし、時々あなたはあなたがやらなければならないことをしなければなりません。

17
beauXjames