【问题标题】:Best ASP.NET MVC Async Update Patterns最佳 ASP.NET MVC 异步更新模式
【发布时间】:2014-02-22 04:34:50
【问题描述】:

几天前我开始学习 ASP.NET MVC,我只是好奇 MVC 在更新视图方面提供了哪些功能。我对WPF 有很多经验,它具有神奇的INotifyPropertyChanged 界面,可以更新属性绑定到的UI 组件。据我所知,没有这样的接口可以在Model 中实现,然后在不刷新页面的情况下异步更新View

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

例如,在我的场景中,我有一个 WebGrid,它绑定到模型中的一个列表,并且我有一个计时器,它每隔几秒刷新一次模型中的数据。将这些更改推送到视图的最佳方式是什么? AJAX 是唯一的选择吗?

【问题讨论】:

    标签: c# ajax asp.net-mvc asp.net-ajax


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      我不知道更“.NETy”的方式。如果您返回一个视图,您将刷新页面,因此您只需要返回计划 ol' json 或 xml 并处理在客户端显示更新。

      【讨论】:

        猜你喜欢
        • 2023-03-18
        • 1970-01-01
        • 2012-06-11
        • 1970-01-01
        • 1970-01-01
        • 2011-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多