How to redirect to Index from another controller?
Solution 1:
Use the overloads that take the controller name too...
return RedirectToAction("Index", "MyController");
and
@Html.ActionLink("Link Name","Index", "MyController", null, null)
Solution 2:
try:
public ActionResult Index() {
return RedirectToAction("actionName");
// or
return RedirectToAction("actionName", "controllerName");
// or
return RedirectToAction("actionName", "controllerName", new {/* routeValues, for example: */ id = 5 });
}
and in .cshtml
view:
@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 */ })
Notice using null
in final expression is not recommended, and is better to use a blank new {}
instead of null
Solution 3:
You can use the following code:
return RedirectToAction("Index", "Home");
See RedirectToAction
Solution 4:
You can use the overloads method RedirectToAction(string actionName, string controllerName);
Example:
RedirectToAction(nameof(HomeController.Index), "Home");
Solution 5:
You can use local redirect. Following codes are jumping the HomeController's Index page:
public class SharedController : Controller
{
// GET: /<controller>/
public IActionResult _Layout(string btnLogout)
{
if (btnLogout != null)
{
return LocalRedirect("~/Index");
}
return View();
}
}