2011-10-25 11 views
89

Ho cercato di trovare un modo per reindirizzare a una vista Index da un altro controller.Come reindirizzare a Index da un altro controller?

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

Questo è quello che ho provato in questo momento. Ora il codice a cui sono stato assegnato ha un ActionLink che collega alla pagina che ho bisogno di Redirect.

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

risposta

209

Utilizzare i sovraccarichi che prendono il nome del controller di troppo ...

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

e

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

Ok questo ha funzionato. Ho provato questo prima deve essere un refuso quando l'ho fatto prima. – cjohnson2136

+2

lo farebbe prima, ma c'era un timer che mi fermava – cjohnson2136

+0

Ah, per noi neofiti MVC questo è stato estremamente utile. Semplicemente, il reindirizzamento a un'altra vista in una cartella diversa rappresentata da un controller diverso stava arrivando fino a quando non ho letto questo. – atconway

12

È possibile utilizzare il seguente codice:

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

Vedi RedirectToAction

+0

ho provato e non ha funzionato. Mi ha dato errore di ricerca della pagina – cjohnson2136

+0

dovrebbe essere con "Controller": 'return RedirectToAction (" Index "," Home ");' – Hiraeth

+0

Ho bisogno di usare "/ Index" altrimenti non trovato – code4j

22

prova:

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

e .cshtml vista:

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

O:

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

O:

@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 */ }) 

Avviso utilizzando null nell'espressione finale non è raccomandato, ed è meglio usare un vuoto new {} invece di null

+3

Per quanto riguarda la tua nota, per quale motivo è meglio usare 'new {}' invece di 'null'? – musefan

1

È possibile utilizzare reindirizzamento locale. seguenti codici saltando la pagina indice del HomeController:

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

      return View(); 
     } 
} 
1

È possibile utilizzare il metodo sovraccarichi RedirectToAction(string actionName, string controllerName);

Esempio:

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