2011-10-25 78 views
89

我一直在尋找通過努力找到一些方式來重定向到來自另一個控制器的Index視圖。如何重定向到另一個控制器的索引?

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

這就是我現在試過的。現在我得到的代碼有一個ActionLink,鏈接到我需要的頁面Redirect

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

回答

209

請使用帶控制器的名字太重載...

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

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

好這個工作。我之前嘗試過這樣做的時候肯定是一個錯字。 – cjohnson2136

+2

這樣做會更快的,但有一個計時器停止我 – cjohnson2136

+0

啊,對於我們新手MVC,這是非常有用的。只是簡單地重定向到另一個不同控制器所代表的不同文件夾中的另一個視圖,直到我閱讀完爲止。 – atconway

12

您可以使用下面的代碼:

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

RedirectToAction

+0

我試過了,它不起作用。它給了我頁找不到錯誤 – cjohnson2136

+0

應符合「控制器」: '返回RedirectToAction(「指數」,「家」);' – Hiraeth

+0

我需要使用「/索引」,否則沒有發現 – code4j

22

嘗試:

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") 

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

注意在最後的表達式中使用null不推薦,而最好使用空白new {}代替null

+3

關於您的通知,出於什麼原因使用'new {}'而不是'null'更好? – musefan

1

您可以使用本地重定向。 下列代碼跳的HomeController的索引頁:

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

      return View(); 
     } 
} 
1

可以使用重載方法RedirectToAction(string actionName, string controllerName);

例子:

RedirectToAction(nameof(HomeController.Index), "Home"); 
相關問題