Jquery 如何自动更新局部视图?
我正在尝试转换我的一个MVC页面,以便它每10秒自动更新一次数据。下面是调用“main”视图的方法 这里有一些观点Jquery 如何自动更新局部视图?,jquery,asp.net-mvc,Jquery,Asp.net Mvc,我正在尝试转换我的一个MVC页面,以便它每10秒自动更新一次数据。下面是调用“main”视图的方法 这里有一些观点 @Html.Partial("SomeView",Model) 而局部视图会消耗模型 @model DatabaseConnectionMonitor.Models.TestDbModel @foreach(var row in @Model.Rows)...... 现在,我如何将这些连接起来,以便局部视图自动刷新?有很多(似乎已经过时的)方法可以接受这一点,我想遵循当前的最佳
@Html.Partial("SomeView",Model)
而局部视图会消耗模型
@model DatabaseConnectionMonitor.Models.TestDbModel
@foreach(var row in @Model.Rows)......
现在,我如何将这些连接起来,以便局部视图自动刷新?有很多(似乎已经过时的)方法可以接受这一点,我想遵循当前的最佳实践。我的研究告诉我应该使用jquery低调的ajax来实现这一点 我个人使用jQuery AJAX调用来满足这种类型的需求。它允许您从服务器查询新数据,而无需刷新页面 这篇帖子上被接受的答案是一个很好的开始: 重新发布代码以便于查看:
$("button").click(function refreshText(){
$.ajax({
url:"http://127.0.0.1:8080/",
success:function(result){
$("#text").val(result);
setTimeout(refreshText, 5000);
}
});
});
另一个选项是signar,它可以向客户端推送更新,但它更复杂一些:您的问题是模糊/宽泛的,因此您可能会得到模糊/宽泛的答案 如果您想要代码示例,那么我建议您提供您尝试过的代码,以便我们能够修复它。堆栈溢出通常不是一个好去处“我如何做这个复杂的事情?向我展示代码。”有许多可能的解决方案 我将向您展示三种(可能有很多)可能的技术
- 难度:我认为对于一个新手来说这是多么困难
- 耐久性:(可能是个坏名字)维护/扩展/修改是多么容易。它的可重用性以及它的粗略估计
setInterval(function() {
$.ajax({
url: "@Url.Action("Action", Controller)"
}).success(function(data) {
$("#someElement").html(data);
});
}, 10000);
3.使用web应用程序Javascript框架
难度:中等,耐久性:高
例如(我的选择),等等都是比jQuery更好的实现这一目标的方法。基本思想类似于jQuery,但解决方案更健壮
您需要创建逻辑(通常在视图模型或控制器中),负责将某些任意数据(如部分视图中的HTML)与用户页面上的数据同步。这可以很容易地用定时器来完成,定时器通常包含在框架中。您可以对定时器进行AJAX调用,或者使用类似signar的东西在某些内容发生更改时通知视图。我想从数据源中提取信息,并在局部视图中显示它。想一想一个股票监视器,它会随着时间的推移而自动更新,我上面给出的选项是你最好的选择。我个人经常使用jQuery AJAX调用来满足这类需求。有没有可能提供AJAX定时器的示例?+1 rowan-您以非常优雅和简单的方式回答了一系列选项。对于一个模糊的问题,这是一个很好的答案。从我在web上看到的示例来看,除了SignalR之外,他们还使用了这些MVVM框架的组合,因此,例如,如果没有SignalR使用方法3,db上的值变化将如何反映用户a、b、c正在查看的内容?
setInterval(function() {
$.ajax({
url: "@Url.Action("Action", Controller)"
}).success(function(data) {
$("#someElement").html(data);
});
}, 10000);