查看:索引
@{ ViewBag.Title = "Home Page"; } @section Content1 { <div> @Ajax.ActionLink("Just refresh", "_Test", "Home", null, new AjaxOptions() { UpdateTargetId = "ContentRefresh", HttpMethod = "Post" }, null) </div> @Html.Partial("_Test") } @section Content2 { <div id="ContentRefresh"> @Html.Partial("_Test2") </div> }
查看:_Test
@using (Ajax.BeginForm("_Test", "Home", null, new AjaxOptions(){UpdateTargetId = "ContentRefresh", HttpMethod = "Post" }, null)) { @Html.TextBox("Name"); <input type="submit" value="Send name" /> }
查看:_Test2
@ViewBag.Name: @ViewBag.DateTime
控制器:
public ActionResult _Test(FormCollection form) { string name = form["Name"]; if (Request.IsAjaxRequest()) { Thread thread = new Thread(() => RunThread()); thread.Start(); ViewBag.Name = name == null ? "No one, just refreshing" : name; ViewBag.DateTime = DateTime.Now.ToShortTimeString(); return PartialView("_Test2"); } else { return View(); } }
此事件是来自业务逻辑的调用。
public void ChangeEventFromBusinessLogic(object o) { //event from RunThread.... //refresch my view }
来自视图的ajax调用确实有效。如何在没有任何用户操作的情况下从业务逻辑刷新视图。
我是怎么做到的?
答案 0 :(得分:0)
您可以通过实现HTML 5功能WebSocketAPI来实现此目的。这是一种推送技术,允许服务器更新他们连接的客户端。
SinglaR
是用于ASP.Net应用程序的WebSocket的微软实现。
请参阅Getting Started with SignalR
这仅适用于支持WebsocketAPI的浏览器