我的ASP.NET MVC 2应用程序分为几个区域。其中一个是主目录中的默认区域,另一个是区域目录中的Account
区域。现在,问题是我需要在这两个区域的控制器中使用相同的视图。
如果他们在同一区域,我只会return View("ViewName")
,但是如何从Account
区域的控制器中的默认区域返回视图呢?有什么想法吗?
答案 0 :(得分:28)
您可以指定视图的相对位置:
return View("~/Views/YourArea/YourController/YourView.aspx");
但是当在多个区域之间共享视图时,我建议您使用~/Views/Shared
文件夹,以便更好地实现此目的。
答案 1 :(得分: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
)View文件,但可以通过提供第二个参数显式设置,如SomeOtherAction()
中所示。
这很简单但很方便,尤其是在开发过程中,当您的区域的路径可能会发生变化时。
希望能有所帮助。