首页 > 解决方案 > 在不重新加载页面的情况下将数据加载到 MVC 视图中

问题描述

我正在构建一个带有 cshtml + Angular 前端的 MVC Web 应用程序。该应用程序的一个重要方面是视图在从自定义数据服务中检索到新数据时自动更新角度数据表。

数据服务通过后端 C# 类中的 API 调用进行访问,该类以设定的时间间隔(大约 5 分钟)将新数据作为 ViewModel List<> 获取,然后缓存。ViewModel List<> 然后作为 ActionResult 参数传递给视图return View(List<model>),在我们的 Angular 控制器中序列化并使用 ng-repeat 显示在表格中。

我对 MVC 比较陌生,现在我知道如何将数据从控制器获取到视图的唯一方法是将其直接作为 ActionResult 参数传递。因此,我将数据放入视图的唯一方法是通过显式操作(HTTPPOST、强制刷新、FormSubmit 等)重新加载整个页面。

我想尝试使用 Angular,也许还有 AJAX(?) 或类似的库,以“询问”进行 API 调用并缓存数据的控制器是否每 10 秒左右有新数据。然后,如果有新数据(大约 5 分钟一次),它将在后台将该数据加载到视图中,而无需重新加载页面,以便 Angular 可以对其进行序列化,然后仅重新加载表格。

这只是为了使用户无需执行显式操作或刷新页面即可获取最新数据。

我知道如何完成这一切,除了让 Angular 询问进行 API 调用的 C# 类是否进行了新的服务调用(并将其存储在 ViewModel 中),然后从该 ViewModel 中“提取”新数据无需返回 ActionResult 即可进入视图

编辑:

由于这是我们的大多数问题/困惑出现的地方,我们的数据服务并不位于我们的应用程序之外,据我所知,无法通过对内部 URL 的引用进行访问。它是我们必须通过 C# 函数调用的“连接服务包”,即

using ServicePackage;
MyDataService = new DataService();

ViewModel.DataList = MyDataService.getData();

这一切都发生在控制器类中。我知道这是 hackey,而不是现代 Web 应用程序架构是如何完成的,但它是客户可以给我们使用的最好的。相信我,如果我们有一个可以查询的数据服务器或 Web-API,我们将使用 $http 或 Ajax 或视图可以从外部源提取数据的十几种其他方式中的任何一种。

标签: c#asp.net-mvcangular

解决方案


推荐阅读