ASP.NET MVC4 - 实际的数据流是什么?

时间:2013-08-23 00:02:31

标签: asp.net-mvc-4

我总是听到并读到ASP.NET MVC4中的交互流是Controller的 - >>型号 - >图。

但是说这个流程实际上是Http Get上的流程并且Http Post上的流程是View - >这不是准确的吗?控制器 - >型号 - >控制器 - >查看(相同或不同 - 无所谓)?

HttpGet flow

enter image description here

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

对于任何HTTP请求,您对“Http Get”的图表都是正确的,无论动词如何。首先,请求进入服务器,路由引擎决定将其发送到哪里 - 这很可能是一个控制器。然后控制器变为活力,必要时调用Model Binder。这是在幕后发生的魔法,你可以拥有一个控制器方法ActionResult Foo(MyComplexModel model),它将请求数据中的值分配给参数,同时执行验证。接下来是控制器中的代码,它最有可能调用View,将其呈现给响应流。

答案 2 :(得分:0)

不,POST的图表与GET相同。 当你发表你的表格o做一个后期的Ajax时,你是在发布一个控制器的行动。

答案 3 :(得分:-1)

  • 控制器验证请求并调用数据模型
  • 模型除了验证输入和控制流之外什么都不做。
  • Controller渲染视图或控件应用程序流,直到结束 流量
  • 在应用程序流程结束时呈现视图。

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

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

  2. 模型执行'应用程序逻辑'就像做一些算法,调用 Db等可能需要'数据调节',如ViewModels(ViewModel 可能负责建模视图)

  3. Controller选择特定视图和ViewModel。

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

    假设我填写表格并提交

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

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

  7. 总之,您最终在Get动词上提供视图,向控制器提交Post动词上的修改,模型执行任何输入验证和流控制并最终重定向到另一个Get动词。< / p>

    这只有在您使用PRG模式时才真正推荐为最佳实践。

    这对你有意义吗?