0

我总是听到并读到 ASP.NET MVC4 中的交互流程是控制器 -> 模型 -> 视图。

但是不准确的说这个流程其实就是一个Http Get上的流程,一个Http Post上的流程是View -> Controller -> Model -> Controller -> View(相同或不同-不事情)?

HttpGet 流

在此处输入图像描述

4

4 回答 4

1

这取决于您将什么归类为“视图”。在 POST 的情况下,根本没有运行服务器端 View 代码,只有浏览器端代码。在响应流中,将在服务器上将一些视图呈现为用于 GET(可能还有 POST)的 HTML。这就是我想说大多数人在谈论 ASP.NET MVC 流时所指的。

于 2013-08-23T00:11:52.997 回答
0

不,视图是一个仅输出的媒体,它被渲染(通常是 HTTP 响应并发送到客户端);它不接收或直接响应发送到服务器的任何数据。

无论动词如何,“Http Get”的图表都适用于任何 HTTP 请求。首先,请求进入路由引擎决定将其发送到哪里的服务器——这很可能是一个控制器。然后控制器开始工作,在必要时调用模型绑定器。这负责幕后发生的魔术,您可以在其中拥有一个控制器方法ActionResult Foo(MyComplexModel model),并将请求数据中的值分配给参数,同时执行验证。下面是控制器中的代码,它很可能调用一个视图,将其呈现给响应流。

于 2013-08-23T00:12:20.677 回答
0

不,POST 的图表与 GET 相同。当您发布表单或通过 Ajax 发布帖子时,您发布的是针对控制器的操作。

于 2013-08-23T00:18:08.760 回答
-1
  • 控制器验证数据的请求和调用模型
  • 模型除了验证输入和控制流之外什么都做。
  • 控制器呈现视图或控制应用程序流,直到流结束
  • 视图在应用程序流程结束时呈现。

要将 HTTP 流与 MVC 混合,我认为您可以这样枚举:

  1. Http Get Request Controller 验证输入(路由、参数等)

  2. 模型执行“应用程序逻辑”,例如执行一些算法、调用 Db 等。可能需要像 ViewModels 一样的“数据建模”(ViewModel 可能负责对视图进行建模)

  3. 控制器选择一个特定的视图和 ViewModel。

  4. 视图被渲染并显示给用户。客户端又名视图逻辑可以发生在视图中,例如验证表单或执行更多请求。(为简单起见,我将其排除在外)

    假设我填写表格并提交

  5. Http Post 从视图中请求一些数据。

  6. 控制器验证数据,模型执行业务逻辑,控制器重定向到 Http Get(重新开始)

总之,您最终在 Get 动词上提供 Views,提交给控制器以对 Post 动词进行修改,并且模型除了输入验证和流控制之外做任何事情并最终重定向到另一个 Get 动词。

仅当您使用真正推荐作为最佳实践的 PRG 模式时才这样做。

你能理解这个吗 ?

于 2013-08-23T00:30:24.373 回答