Razor中的“UpdatePanel”(mvc 3)

问题描述:

Razor中是否有像UpdatePanel(在ASPX中)?Razor中的“UpdatePanel”(mvc 3)

我想每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

<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功能。

+0

$(document).ready()是否也适用于部分视图? – Tobias 2011-05-03 09:02:27

+0

非常感谢。 – Tobias 2011-05-03 09:57:52

传统的控制做ASP MVC不工作

你可以使用jQuery定时器做http://plugins.jquery.com/project/timers

其他选项可以使用Delay功能

在你的目标是刷新那么简单整个页面,这个SO链接将是你的兴趣:Auto refresh in ASP.NET MVC

希望它有助于。

+0

这也是部分意见? – Tobias 2011-05-03 09:01:35

+0

当然。你可以在部分视图中使用这种技术。 – Jonathan 2011-05-05 12:58:26

好吧,如果你不需要的AJAX expierience不是使用HTML标签:

<meta http-equiv=”refresh” content=”30; URL=http://www.programmingfacts.com”> 

去这里:http://www.programmingfacts.com/auto-refresh-page-after-few-seconds-using-javascript/

+0

为什么我应该使用UpdatePanel,如果我不需要Ajax体验? – Tobias 2011-05-05 07:24:38

如果有人想为selfupdating的完整代码局部视图看看!

代码的控制器:

偏(_SelfUpdatingPartial的
[HttpPost] 
public ActionResult RefreshSelfUpdatingPartial() { 

      // Setting the Models Content 
      // ... 

      return PartialView("_SelfUpdatingPartial", model); 
} 

代码。CSHTML):

@model YourModelClass 

<script type="text/javascript"> 
setInterval(function() { 
    $.post('@Url.Action("RefreshSelfUpdatingPartial")', function (data) { 
      $('#SelfUpdatingPartialDiv').html(data); 
     } 
    ); 
}, 20000); 
</script> 
// Div 
<div id="SelfUpdatingPartialDiv"> 

// Link to Refresh per Click 
<p> 
@Ajax.ActionLink("Aktualisieren", "RefreshFlatschels", new AjaxOptions() { 
UpdateTargetId = "FlatschelList", 
HttpMethod = "Post", InsertionMode = InsertionMode.Replace 
}) 
</p> 

// Your Code 
// ... 

</div> 

代码整合在 “主” - 视图(ViewWithSelfupdatingPartial.cs的部分):

@Html.Partial("_FlatschelOverview", Model) 

在HTML的标签<meta refresh ..>会为你工作。它是最好的选择