ASP.NET MVC 2:查看子文件夹?

2024-03-07

在我看来,当我使用视图和控制器时,控制器仅处理各自文件夹的第一级。

/Controllers/MembersController
/Views/Members/

控制器应该如何处理子文件夹?

/Views/Members/Business

控制器isn't。如果您想要一个页面url /Views/Members/Business/ThePage,你可以用以下方法解决这个问题路线定义在您的 global.asax.cs 中。如果您需要将视图放入子文件夹中进行组织,您应该考虑拆分控制器。


Update回应你的评论。

简而言之:是的,路由定义负责选择哪个控制器应该处理您的请求。

似乎可以对 MVC 框架的设计和使用方式进行更详细的演练。我将保持这个非常基本的内容,并跳过有关框架内部工作的所有内容。 (这会让一些高级读者认为我说的话完全错误。请耐心等待 - 我只是故意马虎......)这里......

  1. 当请求从浏览器提交到 Web 服务器时,MVC 框架会转到路由定义以查看应将请求发送到何处。它按照您定义的顺序查看它们,从顶部开始,因此如果有多个匹配项,则只有第一个匹配项相关。 (因此,您希望将非常通用的路线(例如默认路线)保留在底部。)

  2. 当框架确定路由匹配时,它会查找 url 应路由到的控制器和操作。它使用 url 中的数据填充所有操作参数,并调用操作方法。

  3. 控制器上的操作方法现在负责成为“网络中心的蜘蛛”,它负责为响应提供所需的一切。这可能包括查询模型中的数据、调用各种库方法进行计算或几乎任何其他内容。控制器方法的最后一步是确定应该返回什么响应 - 在大多数基本情况下,响应应该是一个视图,返回它的代码是return View();.

  4. 视图(或您返回的任何其他结果)可能从控制器获取一些数据,然后负责正确渲染这些数据。当视图完成其工作后,框架将其返回给客户端。

正如您所看到的,关于应该调用什么控制器操作的决定(步骤 1 和 2)比关于返回结果应该是什么的决定(步骤 3 结束)要早得多,而且两者甚至不一定彼此相关。

为了在您的应用程序中反映这一点,您希望控制器和视图有一个与可用控制器及其操作方法相对应的文件夹和文件结构(至少是那些可以返回ViewResult),以及反映您希望用户使用哪些 url 来访问这些控制器操作的路由集合。通过定义比默认路由更多的路由,您可以获得相当多种 url 结构,而无需更改控制器/操作方法/视图结构。


如果所有这些看起来仍然像是一个决策迷宫,那么可能适合去http://www.asp.net/mvc/ http://www.asp.net/mvc/并观看一些学习视频或阅读一些教程。那里有一些非常好的视频和文本,介绍了该框架如何工作以及如何使用它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET MVC 2:查看子文件夹? 的相关文章

随机推荐