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

Posted

技术标签:

【中文标题】我如何从业务逻辑刷新部分视图【英文标题】:how I refresh the partial view from Business logic 【发布时间】:2013-12-02 18:56:05 【问题描述】:

查看:索引

@ ViewBag.Title = "主页"; @部分内容1 @Ajax.ActionLink("Just refresh", "_Test", "Home", null, new AjaxOptions() UpdateTargetId = "ContentRefresh", HttpMethod = "Post" , null) @html.Partial("_Test") @section 内容2 @Html.Partial("_Test2")

查看:_Test

@using (Ajax.BeginForm("_Test", "Home", null, new AjaxOptions()UpdateTargetId = "ContentRefresh", HttpMethod = "Post" , null)) @Html.TextBox("名称");

查看:_Test2

@ViewBag.Name:@ViewBag.DateTime

控制器:

公共 ActionResult _Test(FormCollection 表单) 字符串名称=表单[“名称”]; if (Request.IsAjaxRequest()) 线程 thread = new Thread(() => RunThread()); 线程.Start(); ViewBag.Name = name == null ? “没有人,只是令人耳目一新”:名称; ViewBag.DateTime = DateTime.Now.ToShortTimeString(); 返回 PartialView("_Test2"); 别的 返回视图();

此事件是来自业务逻辑的调用。

公共无效ChangeEventFromBusinessLogic(对象o) //来自 RunThread 的事件.... //刷新我的视图

来自视图的 ajax 调用确实有效。我如何在没有任何用户操作的情况下从业务逻辑刷新视图。

我该怎么做?

【问题讨论】:

【参考方案1】:

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

SinglaR 是 Microsoft 为 ASP.Net 应用程序实现的 WebSocket。

Getting Started with SignalR

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

【讨论】:

@user3008091,如果您不使用 HTML 5,您可以使用 ajax 并在特定时间间隔内持续 ping 服务器以进行任何更新

以上是关于我如何从业务逻辑刷新部分视图的主要内容,如果未能解决你的问题,请参考以下文章

如何设计业务逻辑层

WPF程序中用户界面和业务逻辑相分离有啥好处?

Django:将业务逻辑与视图逻辑分离

视图逻辑应用逻辑业务逻辑

3.文档视图:从gui分割状态

CakePHP 业务逻辑层