让UpdatePanel支持文件上传(1):开始
来源:互联网 发布:ubuntu如何安装openssh 编辑:程序博客网 时间:2024/05/27 01:08
- 将“上传”按钮设为一个传统的PostBack控件而不是异步PostBack。您可以使用多种方法来这么做:例如将一个按钮放置在UpdatePanel外,将按钮设为某个UpdatePanel的PostBackTrigger,或者调用ScriptManager.RegisterPostBackControl来注册它。
- 建立一个不使用ASP.NET AJAX的上传页面,很多站点已经这么做了。
不过,我们为什么不使UpdatePanel兼容FileUpload控件(<input type="file" />)呢?如果可以这样,一定能够受需要使用UpdatePanel上传文件的用户欢迎。
我们首先要解决的问题是,找到一种能够将信息发送到服务器端的方法。我们都知道XMLHttpRequest只能发送字符串。在这里,我们使用和其他的异步上传文件的解决方案一样,使用iframe来上传文件。iframe元素是一个非常有用的东西,即使在AJAX这个概念出现之前,它已经被用于制作一些异步更新的效果了。
其次,我们应该如何改变当前传输数据的行为呢?幸亏Microsoft AJAX Library有着强大的异步通讯层,我们可以方便创建一个UpdatePanelIFrameExetender来继承Sys.Net.WebRequestExecutor,并且将它交给一个上传文件的WebRequest对象。因此,下面的代码可以作为我们开发组件的第一步:
在上面的代码段中,我们在页面初始化时监听了PageRequestManager对象的beginRequest事件。当PageRequestManager触发了一个异步请求时,我们会检查页面上是否有<input type="file" />控件。如果存在的话,则创建一个新的UpdatePanelIFrameExecutor实例,并分配给即将执行的WebRequest对象。
根据异步通讯层的实现,WebRequest的作用只是一个保存请求信息的容器,至于如何向服务器端发送信息则完全是Executor的事情了。事实上Executor完全可以不理会WebRequest携带的信息自行处理,而我们的UpdatePanelIFrameExecutor就是这样的玩意儿。它会改变页面上的内容,将信息Post到IFrame元素中,并且处理从服务器端获得的数据。(未完待续)
点击这里下载整个项目
English Version
- 让UpdatePanel支持文件上传(1):开始
- 让UpdatePanel支持上传文件
- 让UpdatePanel支持文件上传(3):客户端组件
- 让UpdatePanel支持文件上传(2):服务器端组件
- 让UpdatePanel支持文件上传(3):客户端组件
- 让UpdatePanel支持文件上传(5):支持页面重定向的HttpModule
- 让UpdatePanel支持文件上传(4):数据传输与解析机制
- 让UpdatePanel支持文件上传(4):数据传输与解析机制
- UpdatePanel终于可以上传文件了
- 在UpdatePanel上使用FileUpload上传文件
- Fileupload 如何在updatepanel中上传文件
- 在UpdatePanel上使用FileUpload上传文件
- edtftpj让Java上传FTP文件支持断点续传
- edtftpj让Java上传FTP文件支持断点续传
- 让Android中的webview支持页面中的文件上传
- 让nginx支持文件上传的几种模式
- 让nginx支持文件上传的几种模式
- 让nginx支持文件上传的几种模式
- 理解 IBM Lotus Domino 邮件数据库的限额
- 域名常见问题(FAQs)帮助系统
- 让UpdatePanel支持文件上传(2):服务器端组件
- 应用程序权限设计
- ASP.Net C#2.0全能数据库组件 (含下载实例源码地址)
- 让UpdatePanel支持文件上传(1):开始
- JSP2.0 学习笔记 (5)
- 生成加密和解密的密钥
- 第一贴
- Windows DNS DnssrvQuery() Stack Overflow
- 某进程某算法的执行时间
- 互联网是否已经成为中国支柱产业?
- Microsoft Windows DNS Service RPC Stack Overflow Lets Remote Users Execute Arbitrary Code
- socket, nio socket 及nio socket框架MINA总结