15

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

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

4

2 回答 2

30

您可以指定视图的相对位置:

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

但是当一个视图在多个区域之间共享时,我建议您使用~/Views/Shared更适合此目的的文件夹。

于 2010-08-22T07:27:08.960 回答
7

这是一个老问题,但我认为在 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().

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

希望对某人有所帮助。

于 2013-03-26T14:43:16.920 回答