Asp.net MVC同名视图,路径不同

joh*_*ohn 4 asp.net asp.net-mvc

我想有多个包含相同名称视图的路径文件夹结构:

/profile.aspx
/admin/profile.aspx
/user/editpost.aspx
/admin/editpost.aspx

/Controllers
  |- PostController.cs
  |- ProfileController.cs
Run Code Online (Sandbox Code Playgroud)

我希望能够将所有常规页面放在一个文件夹中,将管理页面放在另一个文件夹中.我是否需要组织我的Views文件夹,如:

/Views
  /User
    /Story
      |- editpost.aspx
    /Profile
      |- profile.aspx
  /Admin
    /Story
      |_ editpost.aspx
    /Web
      |- profile.aspx
Run Code Online (Sandbox Code Playgroud)

或者我有办法做到这一点:

/User
  /Views
    /Story
      |- editpost.aspx
    /Profile
      |- profile.aspx
/Admin
  /Views
    /Story
      |_ editpost.aspx
    /Web
      |- profile.aspx
Run Code Online (Sandbox Code Playgroud)

另外,如何为/ User和/ Admin编写/组织/使用可能具有相同名称的单独控制器?

如果我不清楚,请告诉我.

谢谢!

小智 10

没问题.您可以以您选择的任何方式组织文件夹.您可以按名称指定视图,甚至可以通过Action方法中的路径指定视图:

return View("~/Views/Posts/Index.aspx");
Run Code Online (Sandbox Code Playgroud)


Çağ*_*kin 5

你应该阅读这篇文章菲尔哈克.

基本上,您将需要创建自己的ViewEngine来处理文件夹设计.


Odd*_*Odd 4

第一个版本(当然还有所有 RC 和 Beta 版本)的主要问题之一是 ASP.NET MVC 不支持区域。区域是 ASP.NET 的替代 MVC 框架已经支持了一段时间的东西,当您的项目达到合理的大小时,您最终可能会在同一个文件夹中得到数百个控制器(都具有唯一的名称),并且您的代码将很难排序。

\n\n

您的想法非常有道理,我希望 ASP.NET MVC 框架的未来实例支持开箱即用的区​​域(可以这么说)。同时,您可以轻松地在 ASP.NET MVC 之上创建自己的区域框架。

\n\n

以下是一些可以帮助您的帖子:

\n\n\n\n

希望它们对您有帮助。

\n