別のコントローラーからインデックスにリダイレクトする方法は?


129

Index別のコントローラーからビューにリダイレクトする方法を見つけるために、ずっと探してきました。

public ActionResult Index()
{                
     ApplicationController viewModel = new ApplicationController();
     return RedirectToAction("Index", viewModel);
}

これは私が今試したものです。今私に与えられたコードにはActionLink、必要なページへのリンクも含まれていますRedirect

@Html.ActionLink("Bally Applications","../Application")

回答:


272

コントローラ名も受け取るオーバーロードを使用してください...

return RedirectToAction("Index", "MyController");

そして

@Html.ActionLink("Link Name","Index", "MyController", null, null)

3
これでうまくいきました。私が以前にやったとき、私はこれを以前にタイプミスであったに違いないと思った。
cjohnson2136 '25年

2
それはもっと早くなるでしょうが、タイマーが私を止めていました
cjohnson2136 '25 / 10/25

ああ、私たちMVC初心者にとってこれは非常に役に立ちました。これを読むまでは、別のコントローラーによって表される別のフォルダー内の別のビューにリダイレクトするだけでした。
atconway 2012

コントローラなしでビューにリダイレクトする方法は?などShared/Error
ディランツェンスキー

28

試してください:

public ActionResult Index() {
    return RedirectToAction("actionName");
    // or
    return RedirectToAction("actionName", "controllerName");
    // or
    return RedirectToAction("actionName", "controllerName", new {/* routeValues, for example: */ id = 5 });
}

.cshtmlビュー:

@Html.ActionLink("linkText","actionName")

または:

@Html.ActionLink("linkText","actionName","controllerName")

または:

@Html.ActionLink("linkText", "actionName", "controllerName", 
    new { /* routeValues forexample: id = 6 or leave blank or use null */ }, 
    new { /* htmlAttributes forexample: @class = "my-class" or leave blank or use null */ })

ご注意使用してnull、最終的な表現では、推奨、および空白を使用することをお勧めしていないnew {}代わりに、null


3
あなたの通知に関して、どのような理由でnew {}代わりに使用する方が良いnullですか?
musefan 2011

16

次のコードを使用できます。

return RedirectToAction("Index", "Home");

RedirectToActionを参照してください


私はそれを試しましたが、うまくいきませんでした。ページが見つかりませんでしたというエラーが表示されました
cjohnson2136 '25 / 10/25

「コントローラ」と一緒にする必要があります: return RedirectToAction("Index", "Home");
Hiraeth

「/ Index」を使用する必要があります。それ以外の場合は見つかりません
code4j

@ code4jデフォルトルートをどのように定義しましたか?コントローラーとアクションのデフォルト値を追加しましたか?
Wouter de Kort 2017年

2

あなたはoverloadsメソッドを使うことができます RedirectToAction(string actionName, string controllerName);

例:

RedirectToAction(nameof(HomeController.Index), "Home");

1

ローカルリダイレクトを使用できます。次のコードは、HomeControllerのIndexページにジャンプします。

public class SharedController : Controller
    {
        // GET: /<controller>/
        public IActionResult _Layout(string btnLogout)
        {
            if (btnLogout != null)
            {
                return LocalRedirect("~/Index");
            }

            return View();
        }
}

0

完全な回答(.Net Core 3.1)

ここでのほとんどの回答は正しいですが、コンテキストから少し外れているため、Asp.Net Core 3.1で機能する本格的な回答を提供します。完全を期すために:

[Route("health")]
[ApiController]
public class HealthController : Controller
{
    [HttpGet("some_health_url")]
    public ActionResult SomeHealthMethod() {}
}

[Route("v2")]
[ApiController]
public class V2Controller : Controller
{
    [HttpGet("some_url")]
    public ActionResult SomeV2Method()
    {
        return RedirectToAction("SomeHealthMethod", "Health"); // omit "Controller"
    }
}

たとえばのようなURL固有の文字列を使用しようとすると"some_health_url"、機能しません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.