我有我的ASP.NET MVC 2應用程序分爲幾個區域。其中一個是主目錄中的默認區域,另一個是Areas目錄中的Account
區域。現在,問題是我需要在這兩個區域的控制器中使用相同的視圖。從不同區域返回視圖
如果他們在相同的區域,我只是return View("ViewName")
,但我可以做什麼從我的Account
區域從控制器中的默認區域返回視圖?有任何想法嗎?
我有我的ASP.NET MVC 2應用程序分爲幾個區域。其中一個是主目錄中的默認區域,另一個是Areas目錄中的Account
區域。現在,問題是我需要在這兩個區域的控制器中使用相同的視圖。從不同區域返回視圖
如果他們在相同的區域,我只是return View("ViewName")
,但我可以做什麼從我的Account
區域從控制器中的默認區域返回視圖?有任何想法嗎?
你可以指定視圖的相對位置:
return View("~/Views/YourArea/YourController/YourView.aspx");
但是,當一個視圖多個區域之間共享,我會建議你使用~/Views/Shared
文件夾供應更好這個目的。
謝謝Darin - 我會試試這個。 – 2010-08-22 07:33:04
這是一個老問題,但仍處於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()
所示。
它很簡單但很方便,特別是在開發過程中,當您的區域的路徑可能會改變時。
希望能幫助別人。
只需注意,您可以將此視圖粘貼在'〜/ Views/Shared'文件夾中,並從任何控制器/區域調用'return View(「ViewName」)''。 – Omar 2010-08-22 09:03:27