我如何从业务逻辑中刷新局部视图

时间:2013-11-19 09:35:59

标签: jquery asp.net ajax asynchronous

查看:索引


    @{
        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调用确实有效。如何在没有任何用户操作的情况下从业务逻辑刷新视图。

我是怎么做到的?

1 个答案:

答案 0 :(得分:0)

您可以通过实现HTML 5功能WebSocketAPI来实现此目的。这是一种推送技术,允许服务器更新他们连接的客户端。

SinglaR是用于ASP.Net应用程序的WebSocket的微软实现。

请参阅Getting Started with SignalR

这仅适用于支持WebsocketAPI的浏览器