我正在使用cshtml + Angular前端构建MVC Web应用程序。该应用程序的一个重要方面是View在从自定义数据服务中检索新数据时自动更新角度数据表。
通过后端C#类中的API调用访问数据服务,该调用获取作为ViewModel List&lt;&gt;的新数据。在一个设定的间隔(大约5分钟)然后缓存。 ViewModel列表&lt;&gt;然后作为ActionResult参数return View(List<model>)
传递给视图,在我们的Angular控制器中序列化并使用ng-repeat显示在表中。
我对MVC相对较新,现在我知道如何将控制器中的数据转换为View的唯一方法是直接将其作为ActionResult参数传递。因此,我将数据导入视图的唯一方法是要求我通过显式操作(HTTPPOST,Forced Refresh,FormSubmit等)重新加载整个页面。
我想尝试使用Angular和AJAX(?)或类似的库来“询问”进行API调用的Controller,如果每10秒左右有新数据,则缓存数据。然后,如果有新数据(将会有一次~5分钟),它会将该数据加载到后台的中而不重新加载页面,这样Angular就可以对其进行序列化,然后重新加载桌子。
这只是为了让用户无需制作明确的操作或刷新页面即可获取最新数据。
我知道如何处理这个问题的每一部分,除非让Angular要求进行API调用的C#类如果它已经进行了新的服务调用(并将其存储在ViewModel中)然后“拉”新数据从ViewModel进入视图而不必返回ActionResult
编辑:
由于这是我们的大多数问题/困惑,我们的数据服务不在我们的应用程序之外,据我所知,无法通过引用内部URL访问。它是一个“连接服务包”,我们必须通过C#函数调用,即
using ServicePackage;
MyDataService = new DataService();
ViewModel.DataList = MyDataService.getData();
这一切都发生在Controller类中。我知道这是hackey而不是现代Web应用程序架构是如何完成的,但它是客户可以与我们合作的最佳方式。相信我,如果我们有数据服务器或Web-API,我们可以查询我们将使用$ http或Ajax或其他任何方式,View可以从外部源提取数据。