注:这个方法并不能真正实现无刷新上传文件,只是能够使得上传文件后,滚动条的位置保持不变,相当于无刷新上传。
1、建立用户控件Up.ascx
2、在用户控件中添加UpdatePanel,代码如下
<asp:UpdatePanel ID="UpdatePanel1" runat="server" RenderMode="Block"UpdateMode="Conditional">
<ContentTemplate>
<asp:FileUpload ID="FileUp" runat="server" Height="24px" />
<asp:Button ID="UPing" runat="server" Text=" 上传 " Width="73px" Height="24px" />
<div id="Msg" runat="server" >等待上传...</div>
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="UPing"/>
</Triggers>
</asp:UpdatePanel>
3、在Up.ascx.cs中添加如下代码
public partial class Up : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//这里 Msg.ClientID 很重要,要是直接引用,在父级页面Msg的ID可能会成这个样子 UP1_Msg ,其中UP1是父级页面内引用该控件的ID
//这里的js要考虑在浏览器中解析正确,就必须考虑转义符 \
string js = "javascript:document.getElementById('" + Msg.ClientID + "').innerHTML = '上传中...(可以在这里放置动画图片 或者 iframe 调用其他页面(aspx)实现上传进度的检测以及上传事件的处理)';";
UPing.Attributes.Add("onclick", js);
}
}
public event EventHandler onClick
{
add
{
UPing.Click += value;
//UPing.Text = "事件已经加载" + DateTime.Now.ToString() + value.Method.ToString();
}
remove
{
UPing.Click -= value;
//UPing.Text = "事件已经卸载" + DateTime.Now.ToString();
}
}
/// <summary>
/// 消息
/// </summary>
public string msg
{
get
{
//获取
return Msg.InnerHtml.ToString();
}
set
{
//设置
Msg.InnerHtml = value;
}
}
/// <summary>
/// FileUpload (组件的公开)
/// </summary>
public FileUpload FileUpload
{
get
{
//获取
return FileUp;
}
set
{
//设置
FileUp = value;
}
}
}
4、创建网页(红色代码要注意)
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="无刷上传.aspx.cs" Inherits="MyLove"MaintainScrollPositionOnPostback="true" Debug="true"%>
<%@ Register src="UP.ascx" tagname="UP" tagprefix="uc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无刷上传</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div style="height:500px; background:#CCFFCC;">我是为了看看上传数据提交后,有啥变化没有</div>
<uc1:UP ID="UP1" runat="server" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server" RenderMode="Block" UpdateMode="Conditional">
<ContentTemplate>
<uc1:UP ID="UP2" runat="server" />
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="UP2"/>
</Triggers>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
5、后台代码部分
public partial classMyLove: System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
UP1.onClick += new EventHandler(UP1_UPing_Click);//注册动作(事件,使用代理)
UP2.onClick += new EventHandler(UP2_UPing_Click);
}
/// <summary>
/// 上传保存事件1(就是平时按钮用的)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void UP1_UPing_Click(object sender, EventArgs e)
{
if (UP1.FileUpload.HasFile)
{
long L1 = UP1.FileUpload.FileContent.Length / 1024;//字节流
int L2 = UP1.FileUpload.PostedFile.ContentLength / 1024;//字节长度
string FileName = UP1.FileUpload.FileName;
UP1.msg = "实例化为:UP1" + DateTime.Now.ToString() + "<br/>上传字节流长度是:" + L1.ToString() + "KBit" + "<br/>上传文件大小是(千字节):"
+ L2.ToString() + "KB.";
//保存
UP1.FileUpload.SaveAs(Server.MapPath(@"~/temp/") + FileName);
}
else
{
UP1.msg = "不要忽悠我,没文件啊!" + DateTime.Now.ToString();
}
}
/// <summary>
/// 上传保存事件2
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void UP2_UPing_Click(object sender, EventArgs e)
{
if (UP2.FileUpload.HasFile)
{
string FileName = UP2.FileUpload.FileName;
UP2.msg = "实例化为:UP2 " + DateTime.Now.ToString() + "<br/>上传的文件名是:" + FileName;
//保存
UP2.FileUpload.PostedFile.SaveAs(Server.MapPath(@"~/temp/") + FileName);
}
else
{
UP2.msg = "你就接着忽悠吧 ~ " + DateTime.Now.ToString();
}
}
}
如果出现 检测到有潜在危险的 Request.Form 值。 则在.aspx文件头中加入这句: <%@ Page validateRequest="false" %>
参考网址:我就是根据这个网址内容修改的,感谢作者。
http://apps.hi.baidu.com/share/detail/15914216
分享到:
相关推荐
ASP.NET_AJAX入门系列:使用UpdatePanel控件.docASP.NET_AJAX入门系列:使用UpdatePanel控件.doc
该控件能够定是引发整个页面回送,当它与Updatepanel空间搭配使用时,就可以定时引发异步回送并进行局部刷新
vs.net控件updatePanel实现无刷新的方法,需要的朋友可以参考一下
第20章 在用户控件和自定义控件中使用UpdatePanel 第21章 页面生命周期和异步的局部页面呈现 第22章 ASP.NET AJAX客户端PageRequestManager 第23章 异步局部页面呈现:服务器端处理 第24章 异步局部页面呈现:客户端...
14.3.3 UpdatePanel控件 14.3.4 UpdateProgress控件 14.3.5 Timer控件 14.4 本章小结 实践篇 第15章 个人网站初学者工具包 15.1 个人网站初学者工具包概述及创建 15.2 系统通用类及配置文件 15.2.1 配置文件...
主要内容包括:ASP .NET AJAX技术慨述、实现异步局部更新页面、UpdatePanel编程功能、 PageRequestManager的使用方法、Timer控件、Control Toolkit方法、结合 OOP功能、如何在客户端JavaScript调用web服务、如何从...
为了避免这种现象,我们只需要把这个Button控件加入UpdatePanel控件中。 <br>3.重新运行该页面,可看到该页面已经一切正常了。 <br> <br>自动更新和GPS导航 <br> <br>我们可以使用AJAX框架中的Timer...
ASP.NET 4高级程序设计(第4版)》【原版书为:Pro ASP.NET 4 in C# 2010】是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的...
1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio 2008 1.3.1 安装Visual ...
这是整部学习资料 由于太大第一章免费供应给大家 在我的上传资源中 如果觉得还不过希望大家给个好评 当然具体本书的作者就不深究了把! 第1章 认识ASP.NET 3.5 1.1 什么是ASP.NET 1.1.1 .NET历史与展望 1.1.2 ASP...
主要内容包括:ASP .NET AJAX技术慨述、实现异步局部更新页面、UpdatePanel编程功能、 PageRequestManager的使用方法、Timer控件、Control Toolkit方法、结合 OOP功能、如何在客户端JavaScript调用web服务、如何从...
1.1.5 ASP.NET 3.5 新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET 应用程序需框架 1.2.1 什么是.NET 应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio 2008 1.3.1 安装...
主要内容包括:ASP .NET AJAX技术慨述、实现异步局部更新页面、UpdatePanel编程功能、 PageRequestManager的使用方法、Timer控件、Control Toolkit方法、结合 OOP功能、如何在客户端JavaScript调用web服务、如何从...
主要内容包括:ASP .NET AJAX技术慨述、实现异步局部更新页面、UpdatePanel编程功能、 PageRequestManager的使用方法、Timer控件、Control Toolkit方法、结合 OOP功能、如何在客户端JavaScript调用web服务、如何从...
主要内容包括:ASP .NET AJAX技术慨述、实现异步局部更新页面、UpdatePanel编程功能、 PageRequestManager的使用方法、Timer控件、Control Toolkit方法、结合 OOP功能、如何在客户端JavaScript调用web服务、如何从...
1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio 2008 1.3.1 安装Visual ...
1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio 2008 1.3.1 安装Visual ...
10.4 使用UpdatePanel控件 10.5 使用Timer控件 10.6 使用UpdateProgress控件 10.7 小结 第11章 使用ASP.NET AJAX ControlToolkit 11.1 使用ASP.NET AJAX Control Toolkit 11.2 Toolkit控件...
10.4 使用UpdatePanel控件 10.5 使用Timer控件 10.6 使用UpdateProgress控件 10.7 小结 第11章 使用ASP.NET AJAX ControlToolkit 11.1 使用ASP.NET AJAX Control Toolkit 11.2 Toolkit控件...