首页 文章

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

提问于
浏览
0

查看:索引

@{
        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

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

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

    Getting Started with SignalR

    This will work only in the browser which supports WebsocketAPI

相关问题