2014-02-21 138 views
0

我开始学习ASP.NET MVC前几天,我只是好奇MVC提供了什么功能,只要更新视图。我与WPF有很多经验,它具有神奇的INotifyPropertyChanged界面,用于更新属性绑定的UI组件。据我所知,没有这样的接口,我们可以在Model中实现,然后将更新View异步而不刷新页面。最佳ASP.NET MVC异步更新模式

所以我的问题是,什么是从模型更新视图,而不必刷新页面的最佳做法?我知道在传统的ASP.NET中我们会使用AJAX来实现这一点,但我想知道MVC是否提供了一个更清晰,更“.NETy”的实现方式。

因此,例如在我的方案中,我有一个WebGrid绑定到模型中的列表,并且我有一个计时器,每隔几秒刷新模型中的数据。推动这些变化的最佳方式是什么? AJAX是唯一的选择吗?

回答

1

总之,要实现类似于你所描述的行为需要某种类型的Ajax的行为。控制器操作方法中引用的模型和UI之间的连接在每个请求/响应周期都会中断,因此实时更新模型属性不会像WPF中习惯的那样发生。

最简单的方法是使用AngularJS中的某些东西来创建SPA,并使用MVC的WebAPI功能来公开客户端使用的API。这不会让你立即获得实时属性更新,但一个好的框架将帮助你组织你的客户端代码,并避免页面刷新,如果这是你的设计目标。

1

您可以在您的控制器上创建返回JsonResult的操作。通过ajax执行该操作并使用返回的数据更新您的客户端。就像@ maf748建议的那样,如果你的应用程序大部分应该以这种方式行事,我会研究web api。

我不知道更多的“.NETy”方式。如果你返回一个View,你将刷新页面,所以你只需要返回ol'json或者xml,并在客户端处理显示更新。