更新布局中的局部视图

时间:2015-10-06 14:42:23

标签: asp.net-mvc view partial

我正在使用C#开发ASP.NET MVC项目。 好的,我有一个布局视图,我放置了我的局部视图,其中只包含一个显示通知消息的div。

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

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

我该怎么做?感谢。

1 个答案:

答案 0 :(得分: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完成的,一切都在你身上。没有简单的“替换这个局部视图”按钮。