如何从另一个控制器重定向到Index
本文关键字:重定向 Index 控制器 另一个 | 更新日期: 2023-09-27 18:12:27
我一直在寻找从另一个控制器重定向到Index
视图的方法。
public ActionResult Index()
{
ApplicationController viewModel = new ApplicationController();
return RedirectToAction("Index", viewModel);
}
这是我现在尝试的。现在我得到的代码有一个ActionLink
链接到我需要Redirect
的页面。
@Html.ActionLink("Bally Applications","../Application")
也使用以控制器名为参数的重载…
return RedirectToAction("Index", "MyController");
和
@Html.ActionLink("Link Name","Index", "MyController", null, null)
try:
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 */ })
注意不建议在final expression中使用null
,最好使用空白的new {}
代替null
您可以使用以下代码:
return RedirectToAction("Index", "Home");
看到RedirectToAction
您可以使用重载方法RedirectToAction(string actionName, string controllerName);
例子:
RedirectToAction(nameof(HomeController.Index), "Home");
您可以使用本地重定向。下面的代码将跳转到home控制器的索引页:
public class SharedController : Controller
{
// GET: /<controller>/
public IActionResult _Layout(string btnLogout)
{
if (btnLogout != null)
{
return LocalRedirect("~/Index");
}
return View();
}
}
完整答案(。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"
,它将无法工作!
标签帮助器:
<a asp-controller="OtherController" asp-action="Index" class="btn btn-primary"> Back to Other Controller View </a>
在controller.cs中有一个方法:
public async Task<IActionResult> Index()
{
ViewBag.Title = "Titles";
return View(await Your_Model or Service method);
}
RedirectToRoute()是另一种选择。只需传递路由作为参数。此外,使用nameof()可能是一个更好的约定,因为您没有将控制器名称硬编码为字符串。
return RedirectToRoute(nameof(HomeController) + nameof(HomeController.Index));