从代码隐藏文件中刷新asp.net页

本文关键字:asp net 刷新 代码 隐藏文件 | 更新日期: 2023-09-27 18:10:58

我有一个ASP。NET网站和一个单独的c#应用程序。应用程序将数据写入文件,网站用文件中的数据填充树视图。我在页面加载事件中填充treeview。

网站检查文件是否更改。这发生在代码隐藏文件中。如果文件确实发生了变化,则需要刷新网站。我不能用Response.Redirect,因为我得到一个

响应在此上下文中不可用

我尝试了System.Web.HttpContext.Current.Response.Redirect,但这给了我一个NullReference。

我如何从代码后面的文件刷新页面,使它加载正确的数据在树视图?欢迎其他有效的建议,但使用其他方法而不是刷新页面。提前感谢!

Edit:实际问题是动态更新树视图(新数据=更新的树视图)。我曾试图做一些从MySql数据库的数据,但失败了。想法是一样的,除了数据不是来自文件而是来自数据库。我添加了这个,因为我认为这个信息可能有助于用户理解我的问题。

从代码隐藏文件中刷新asp.net页

你不能主动从服务器发送数据到客户端。

如果有新的数据可用,你必须轮询(jQuery/ajax),然后从客户端刷新。

基本上包括:

    服务器上的
    • 一个web服务,webmethod页面方法,自定义处理程序等,可以判断新数据是否可用
  • 在客户端
    • 一个计时器,如果数据被刷新,查询服务器,并且,在这种情况下,刷新页面,或者如果使用一些JS模板重构DOM

[Edit] a bit of background:

实际上,System.Web.HttpContext.Current.Response是空的,因为Http协议的异步模型。浏览器发出一个请求"http://srv/resource",服务器在端口80上拦截它(默认情况下),解析请求,构建响应(主要是一堆html内容)并将响应发送给浏览器。然后关闭连接。这种选择允许很大的可伸缩性,因为它不需要在几乎没有数据传递的情况下保持数千个连接处于活动状态。

这样做的影响是,web服务器必须知道客户端,而不是在请求中发送的内容。服务器接收文本,并返回文本。

Microsoft创建了ASP。. Net框架重现桌面应用程序的RAD感觉。您使用控件和事件进行思考,而不是像ASP或PHP那样生成html流。他们的成功之处在于,构建web应用程序与桌面开发非常相似

quite 实际上是引起您一些困惑的原因。即使asp.net框架封装了大部分管道(viewstate是关键)来模拟这种行为,asp.net至少仍然是请求文本的解析器,它会生成一个html文本发送给客户端。

所以你必须作弊。正如我所建议的那样,您可以自动化浏览器(使用javascript)将此异步工作封装到"动态"应用程序中。

你不能在网页中成功使用FileSystemWatcher

页面实例的存活时间仅够处理单个请求。在请求被送达之后,你就不能发出重定向了。浏览器将不再监听。

你需要做轮询从你的网页,使用你最后一次读取该文件的日期。如果该文件的Last Modified日期与您所记得的有所不同,则需要刷新页面。