C# asp.net mvc应用程序中模型和视图之间的直接通信

C# asp.net mvc应用程序中模型和视图之间的直接通信,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我已经做了一个Asp.NETMVC应用程序。当我完成它时,我看到了这个图表 我不理解mvc模式中模型和视图之间的直接通信,我从未见过这样的事情 所以我需要知道: 何时需要或建议进行这种直接沟通 你能给我一个在Asp.net mvc4应用程序中实现它的小例子吗 如您所见,该图在模型和视图之间有一条虚线。据我理解,这意味着这种联系不是直接的。对我来说,这看起来像是对某种观察者模式的引用。一些客户端技术,如Facebook React和AngularJS,实现了观察者模式。也就是说,视图“查看”模型

我已经做了一个Asp.NETMVC应用程序。当我完成它时,我看到了这个图表

我不理解mvc模式中模型和视图之间的直接通信,我从未见过这样的事情

所以我需要知道:

  • 何时需要或建议进行这种直接沟通
  • 你能给我一个在Asp.net mvc4应用程序中实现它的小例子吗

  • 如您所见,该图在模型和视图之间有一条虚线。据我理解,这意味着这种联系不是直接的。对我来说,这看起来像是对某种观察者模式的引用。一些客户端技术,如Facebook React和AngularJS,实现了观察者模式。也就是说,视图“查看”模型,当模型更改时,视图会重新呈现自身以反映视图中的更改

    通过这种方式,您可以向后看,并说模型的更新正在触发视图的事件,该事件将重新呈现视图。我想这就是图中虚线的意思


    您可以在MVC视图中手动实现这一点,但也可以利用我上面提到的框架。

    您展示的图表是一个不绑定http短命令的MVC应用程序,如windows窗体应用程序或任何类似的应用程序。在那里,你可以从模型中发送一些信息,比如“嘿,看,我得到了一些新数据”

    对于web,这是不可能的(没有AJAX/SignalR/…)。你没有那条虚线。稍微简化一点(因为您可以有许多过滤器和模型以及其他插件点),控制器收集输入(如果有)并请求或创建(视图)模型,该模型作为ActionResult返回。然后创建视图(例如,使用Razor视图引擎)并将其发送到浏览器

    从那时起,用户识别为其视图(浏览器显示的内容)的内容与在web服务器上创建的视图之间就没有任何联系。因此,它们之间不能发送任何事件

    如果您需要(服务器端)模型和(服务器端)视图之间的连接,则可以通过事件或notify属性更改等方式完成