2015-10-06 216 views
-2

我正在使用C#处理ASP.NET MVC项目。 好的,我有一个布局视图,我把我的局部视图,其中只包含显示通知消息的div。在布局中更新局部视图

现在从某种角度来看,我有一个按钮,可以在5分钟内以异步方式生成报告。在生成报告时,我需要允许用户使用网站的其他区域。

我的操作方法,一旦报告生成成功,只返回一个字符串“Success”,o/w“Fail”。 我想要做的就是将返回的字符串分配给布局页面上的局部视图的div。因此,用户可以通过这种方式从他在网站中的任何地方看到通知。

我该怎么做?谢谢。

回答

0

这里有很多不同的事情发生在这里。首先,您希望服务器以“成功”或“失败”状态更新用户。这需要1)使用Web套接字在客户端和服务器之间创建一个持久连接,允许服务器与客户端交谈而不需要客户端首先发送请求,或者2)长轮询,这意味着客户端不断发送以确定的时间间隔请求查看服务器是否有更新。

长轮询(带AJAX)是在web套接字出现之前实现这一目标的唯一方法,这些套接字相对较新,并且得不到普遍支持。特别是,在服务器端需要IIS8 +,而在客户端,您需要一个现代浏览器,除了IE 9及以下版本外,其他任何浏览器都是如此。如果您无法在IIS8 +上运行该站点,或者您需要支持IE的旧版本,那么您将陷入长轮询。

但是,无论采用哪种方法,您都绑定到单个页面。如果用户离开,web套接字连接关闭,并且长轮询停止。如果用户仍然在您的网站上,下一页将需要重新建立所有这些功能以保持其正常工作。这并不难 - 只是需要注意的一点。这意味着您需要在网站上为此加载一些通用脚本。

现在只要替换你的“局部视图”的内容去。你不应该这样看待它。我鼓励你阅读我的文章:There's no such thing as a "partial view" client-side,在那里我了解更多细节。 TL; DR版本是客户端的所有更新都发生在客户端,并且在那一点上,您拥有的只是浏览器DOM。没有“局部视图”的概念。如果你想替换DOM的一部分,你必须选择并操作它。这一切都是用JavaScript完成的,全部都在你身上。没有简单的“替换这个局部视图”按钮。