2011-10-25 86 views
89

He estado buscando tratando de encontrar una forma de redireccionar a una vista Index desde otro controlador.¿Cómo redirigir al índice desde otro controlador?

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

Esto es lo que probé en este momento. Ahora el código que me dieron tiene un ActionLink que vincula a la página que necesito para Redirect también.

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

Respuesta

209

Use las sobrecargas que toman el nombre del controlador también ...

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

y

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

Ok esto funcionó. Intenté esto antes debe haber sido un error tipográfico cuando lo hice antes. – cjohnson2136

+2

hizo eso antes, pero hubo un cronómetro que me detuvo – cjohnson2136

+0

Ahh, para nosotros los novatos MVC esto fue extremadamente útil. Simplemente me estaba redirigiendo a otra vista en una carpeta diferente representada por un controlador diferente hasta que leí esto. – atconway

12

Usted puede utilizar el siguiente código:

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

Ver RedirectToAction

+0

Lo intenté y no funcionó. Me dio la página no se pudo encontrar el error – cjohnson2136

+0

debería estar con "Controlador": 'return RedirectToAction (" Índice "," Inicio ");' – Hiraeth

+0

Necesito usar "/ Index"; de lo contrario – code4j

22

intento:

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

y en .cshtml vista:

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

OR:

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

OR:

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

Aviso usando null en la expresión final no se recomienda, y es mejor utilizar un espacio en blanco en lugar de new {}null

+3

Con respecto a su aviso, ¿por qué razón es mejor usar 'new {}' en lugar de 'null'? – musefan

1

Puede utilizar redirección local. siguientes códigos están saltando la página Índice del HomeController:

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

      return View(); 
     } 
} 
1

Usted puede utilizar el método sobrecargas RedirectToAction(string actionName, string controllerName);

Ejemplo:

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