2012-07-05 30 views
0

我是全新的MVC(做了多年的傳統ASP)。我不確定我知道如何提出這個問題。基本上,我希望一個控制器的操作能夠無縫地傳輸/重定向到另一個視圖/控制器。我試過VS Express MVC3新手重定向問題

public class SetupController : Controller 
    { 
     ... 
     public ActionResult Bicycles() 
     { 
      return RedirectToAction("Index", "Bicycles"); 
     } 
    } 

但問題是,這需要我到localhost /自行車(不存在)。我想要的是去本地主機/設置/自行車。我想這(增加「設置」父文件夾到控制器名稱):

public class SetupController : Controller 
    { 
     ... 
     public ActionResult Bicycles() 
     { 
      return RedirectToAction("Index", "Setup/Bicycles"); 
     } 
    } 

但是這創造了一個無限的重定向循環,使瀏覽器正確地拒絕這樣做。

希望它是有道理的,我想要做的。

+0

您的第一個示例按預期工作。請參閱下面的答案。 – veblock

回答

0

我相信你正在尋找的是:

public ActionResult Bicycles() 
    { 
     return RedirectToAction("Bicycles", "Setup"); 
    } 

的第一個參數是行動,第二個控制器。

由於您已經在SetupController的Bicycles動作中,您將獲得無限重定向。但是,從你提到的那個,這是你試圖重定向到的地方。

+0

這造成了無限重定向循環 –

+0

正確,這是因爲該方法只是重定向到自身。但這似乎是你提到的問題是所需的重定向。你的預期行爲是什麼?這將幫助我們幫助你。 –

+0

我試圖在Setup文件夾下分組相關的視圖,以便它們不會使網站根目錄結構複雜化。所以,我想,如安裝程序/自行車,設置/標籤,設置/路線等,我不希望他們直接在視圖根目錄換句話說。 –

0
protected internal RedirectToRouteResult RedirectToAction(
    string actionName, 
    string controllerName 
) 

所以你的第一個例子重定向到自行車控制器中的索引動作,因此是本地主機/自行車。

+0

我該如何去localhost/setup/bicycles?我想在安裝文件夾下對相關的「設置」視圖進行分組。我不想要「根」 –

+0

下的「自行車」從哪裏出發?正如Pablo寫的,你使用'return RedirectToAction(「Bicycles」,「Setup」);'去localhost/setup/bicycles,但是你不能用同樣的動作進行無限重定向。把它放在任何其他的行動前。指數。 – veblock

+0

我真的只是試圖組織的意見,以便我沒有一個大的Views目錄 - 這樣的東西一起被物理分組在一起。也許我畢竟不需要ActionLink - 我不知道。如果我堅持視圖下的1級深度目錄結構,我可以使事情發揮作用,但是我希望您可以任意地在文件夾中嵌套視圖並輕鬆地在其中導航。 –