是否有类似UpdatePanel(在ASPX中)的Razor?
我想每30秒自动刷新一次数据(例如表格,图表等)。类似于每30秒单击以下链接:
@Ajax.ActionLink("Refresh", "RefreshItems", new AjaxOptions() { UpdateTargetId = "ItemList", HttpMethod = "Post"})
编辑:
我可能应该补充说,动作链接呈现了部分视图。
cshtml中的代码:
<div id="ItemList"> @Html.Partial("_ItemList", Model) </div>
控制器中的代码:
[HttpPost] public ActionResult RefreshItems() { try { // Fill List/Model ... // Return Partial return PartialView("_ItemList", model); } catch (Exception ex) { return RedirectToAction("Index"); } }
如果PartielView可以刷新自身,它将被创建。
您可以使用Jquery尝试类似以下的操作(虽然尚未测试)
<script type="text/javascript"> $(document).ready(function() { setInterval(function() { // not sure what the controller name is $.post('<%= Url.Action("Refresh", "RefreshItems") %>', function(data) { // Update the ItemList html element $('#ItemList').html(data); }); } , 30000); }); </script>
上面的代码应放置在包含页面(即不是局部视图页面)中。请记住,局部视图不是完整的html页面。
我最初的猜测是可以将该脚本放置在局部脚本中,并进行如下修改。确保将ajax数据类型设置为html。
html
<script type="text/javascript"> setInterval(function() { // not sure what the controller name is $.post('<%= Url.Action("Refresh", "RefreshItems") %>', function(data) { // Update the ItemList html element $('#ItemList').html(data); }); } , 30000); </script>
另一种选择是将javascript存储在单独的js文件中,并在ajax成功回调中使用Jquery getScript函数。
js