Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 2 ASP.NET MVC 2:是否查看子文件夹?_Asp.net Mvc 2 - Fatal编程技术网

Asp.net mvc 2 ASP.NET MVC 2:是否查看子文件夹?

Asp.net mvc 2 ASP.NET MVC 2:是否查看子文件夹?,asp.net-mvc-2,Asp.net Mvc 2,在我看来,当我使用视图和控制器时,控制器只处理各自文件夹的第一级 /Controllers/MembersController /Views/Members/ 控制器应该如何处理子文件夹 /Views/Members/Business 控制器不是。如果您想在url/Views/Members/Business/ThePage上找到一个页面,您可以使用global.asax.cs中的路由定义来解决这个问题。如果需要在子文件夹中设置视图,则应考虑拆分控制器。 更新以回应您的评论 简而言之:是的

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

/Controllers/MembersController
/Views/Members/
控制器应该如何处理子文件夹

/Views/Members/Business

控制器不是。如果您想在url
/Views/Members/Business/ThePage
上找到一个页面,您可以使用global.asax.cs中的路由定义来解决这个问题。如果需要在子文件夹中设置视图,则应考虑拆分控制器。


更新以回应您的评论

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

似乎可以对MVC框架的设计使用进行更详细的演练。我将保持这一点非常基本,并跳过所有关于框架内部工作的内容。(这会让一些高级读者认为我说的话完全是错误的。请容忍我——我只是故意马虎…)接下来

  • 当请求从浏览器提交到web服务器时,MVC框架将转到路由定义以查看请求应发送到的位置。它会按照您定义它们的顺序来查看它们,即top first,因此,如果有多个匹配项,则只有第一个匹配项是相关的。(因此,您希望将非常常规的路线(如默认路线)保留在底部。)

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

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

  • 视图(或您返回的任何其他结果)可能从控制器获取一些数据,然后负责正确呈现这些数据。当视图完成其工作时,框架将其服务回客户机

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

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



    如果所有这些看起来仍然像迷宫般的决定,那么去看一些学习视频或阅读一些教程可能是合适的。这里有一些非常好的视频和文本,介绍了框架的工作原理和使用方法。

    在控制器操作中,您可以从任意文件夹返回视图,如下所示:

    return View("/Views/Members/Business/Index.aspx", model);
    

    如果有人仍然对解决方案感兴趣,MVC有一个叫做“区域”的东西,允许您定义子文件夹


    好的。。。那么路由定义决定了要使用哪些控制器?