从其他区域返回视图

时间:2010-08-22 07:24:53

标签: c# asp.net-mvc asp.net-mvc-2 areas

我的ASP.NET MVC 2应用程序分为几个区域。其中一个是主目录中的默认区域,另一个是区域目录中的Account区域。现在,问题是我需要在这两个区域的控制器中使用相同的视图。

如果他们在同一区域,我只会return View("ViewName"),但是如何从Account区域的控制器中的默认区域返回视图呢?有什么想法吗?

2 个答案:

答案 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()中所示。

这很简单但很方便,尤其是在开发过程中,当您的区域的路径可能会发生变化时。

希望能有所帮助。