我将 ASP.NET MVC 2 应用程序分为几个区域。其中一个是主目录中的默认区域,另一个是Account
区域目录中的区域。现在,问题是我需要在这两个区域的控制器中使用相同的视图。
如果他们在同一个区域,我会return View("ViewName")
,但是我能做些什么来从我所在区域的控制器中的默认区域返回视图Account
?有任何想法吗?
我将 ASP.NET MVC 2 应用程序分为几个区域。其中一个是主目录中的默认区域,另一个是Account
区域目录中的区域。现在,问题是我需要在这两个区域的控制器中使用相同的视图。
如果他们在同一个区域,我会return View("ViewName")
,但是我能做些什么来从我所在区域的控制器中的默认区域返回视图Account
?有任何想法吗?
您可以指定视图的相对位置:
return View("~/Views/YourArea/YourController/YourView.aspx");
但是当一个视图在多个区域之间共享时,我建议您使用~/Views/Shared
更适合此目的的文件夹。
这是一个老问题,但我认为在 MVC 中仍然是一个相关问题,所以这是我如何以 DRY 方式解决它,让您轻松更改服务器路径,并自动更新所有相关操作:
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()
.
这很简单但很方便,尤其是在开发过程中,当您的区域路径可能发生变化时。
希望对某人有所帮助。