Asp.net mvc 4 ASP.NET MVC4-实际的数据流是什么?
我经常听说和读到ASP.NETMVC4中的交互流是控制器->模型->视图 但是,如果说这个流实际上是Http Get上的流,而Http Post上的流是View->Controller->Model->Controller->View(相同或不同-无所谓),这难道不准确吗Asp.net mvc 4 ASP.NET MVC4-实际的数据流是什么?,asp.net-mvc-4,Asp.net Mvc 4,我经常听说和读到ASP.NETMVC4中的交互流是控制器->模型->视图 但是,如果说这个流实际上是Http Get上的流,而Http Post上的流是View->Controller->Model->Controller->View(相同或不同-无所谓),这难道不准确吗 这取决于您将什么分类为“视图”。在POST中,根本没有运行服务器端视图代码,只有浏览器端代码。在响应流中,将在服务器上为GET(可能还有POST)将一些视图渲染成HTML。我想说的是,大多数人在谈论ASP.NET MVC流时
这取决于您将什么分类为“视图”。在POST中,根本没有运行服务器端视图代码,只有浏览器端代码。在响应流中,将在服务器上为GET(可能还有POST)将一些视图渲染成HTML。我想说的是,大多数人在谈论ASP.NET MVC流时都会提到这一点。不是。视图是一种仅输出的媒体,它被呈现(通常是HTTP响应并发送到客户端);它不会接收发送到服务器的任何数据,也不会直接对其作出反应
对于任何Http请求,不管动词是什么,您的“Http Get”图表都是正确的。首先,请求进入服务器,路由引擎决定将其发送到哪里——这很可能是一个控制器。然后控制器开始工作,必要时调用模型绑定器。这就是幕后发生的神奇之处,在这里,您可以使用控制器方法
ActionResult Foo(MyComplexModel model)
,并将请求数据中的值分配给参数,同时执行验证。接下来是控制器中的代码,它很可能调用一个视图,将其呈现到响应流中。否,POST的图表与GET相同。
当您发布表单o进行post vía Ajax时,您是针对控制器的操作进行发布。- 控制器验证数据的请求和调用模型
- 模型除了验证输入和控制流之外什么都做
- 控制器渲染视图或控制应用程序流,直到 流动
- 视图在应用程序流结束时呈现
这对你有意义吗?Josh,谢谢你花时间。我想我明白你的意思。让我看看能否用一个例子改写你说的话。比方说,“提交”按钮不算作与控制器交互的视图(浏览器端代码),该部分被跳过。只有当post请求到达服务器时,它才算是控制器,接收请求,做它需要做的任何事情,并向用户返回一些其他视图。这就是你的意思吗?是的,这正是我的意思。实际上,你把视图上的视图模型发布到控制器操作中。我认为这就是图表的想法…@Bart-no。您不发布viewmodel,而是发布一组名称-值对(如果使用标准数据格式),或者可能是一个数据块(如果是文件或json数据)。这些可能会映射到视图模型,也可能不会。。但是您实际上并没有发布一个实际的ViewModel本身?我真的很感谢你的评论。有点不相关,但别忘了“Post/Redirect/Get”模式,这是一种处理帖子的安全方式: