2010-08-22 79 views
12

我有我的ASP.NET MVC 2應用程序分爲幾個區域。其中一個是主目錄中的默認區域,另一個是Areas目錄中的Account區域。現在,問題是我需要在這兩個區域的控制器中使用相同的視圖。從不同區域返回視圖

如果他們在相同的區域,我只是return View("ViewName"),但我可以做什麼從我的Account區域從控制器中的默認區域返回視圖?有任何想法嗎?

+0

只需注意,您可以將此視圖粘貼在'〜/ Views/Shared'文件夾中,並從任何控制器/區域調用'return View(「ViewName」)''。 – Omar 2010-08-22 09:03:27

回答

27

你可以指定視圖的相對位置:

return View("~/Views/YourArea/YourController/YourView.aspx"); 

但是,當一個視圖多個區域之間共享,我會建議你使用~/Views/Shared文件夾供應更好這個目的。

+0

謝謝Darin - 我會試試這個。 – 2010-08-22 07:33:04

4

這是一個老問題,但仍處於MVC一個相關的問題,我認爲,所以這裏是我如何解決它在乾燥的方式,可以讓你輕鬆地更改服務器的路徑,並有所有相關的操作,自動更新:

public class FooController : Controller 
{ 

    private ActionResult FooView(string name, string extension = "cshtml") { 
     return View("~/Areas/Bar/Views/Foo/" + name + "." + extension); } 
    } 


    public ActionResult SomeAction(){ 

     return FooView("AreaSpecificViewName"); 

    } 

    public ActionResult SomeOtherAction(){ 

     return FooView("AnotherAreaSpecificViewName", "aspx"); 

    } 

} 

這很整齊,因爲它默認爲Razor(.cshtml)查看文件,但可以通過提供第二個參數來顯式設置,如SomeOtherAction()所示。

它很簡單但很方便,特別是在開發過程中,當您的區域的路徑可能會改變時。

希望能幫助別人。