UpdatePanel中使用FileUpload的变通方法

对于在UpdatePanel中使用FileUpload来上传文件,网上有很多说是在Triggers来解决

<Triggers>
<span style="white-space:pre">	</span><asp:PostBackTrigger ControlID ="btnAddProduct" /> <!-- btnAddProduct为提交按钮 -->
</Triggers>

但是,这种方法也就失去了使用UpdatePanel的意义,会刷新页面,所以使用iframe才是真正的解决方法。
在适当的位置,放置一个上传附件的UpdatePanel区域并加iframe用于放置FileUpload控件

实现过程:

1、新建主页面Default.aspx

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<span style="white-space:pre">	</span><ContentTemplate>
		<iframe id="file" name="file" src="attachment.aspx" scrolling="no" style="width: 300px; height: 35px;border :0px;"></iframe> 
<span style="white-space:pre">	</span></ContentTemplate>
</asp:UpdatePanel> 

2:新建上传文件的页面attachment.aspx,然后放上FileUpload控件

    <div>
        <asp:FileUpload ID="FileUpload1" runat="server" Width="180px" 
            Height="25px" />
        <asp:Button ID="Button1" runat="server" οnclick="Button1_Click" Text="读取文件" 
            Width="80px" Height="25px" />    
    </div>
3:在attachment.aspx的cs文件通过Button1的Click事件上传文件里面,上传文件之后调用主页面的js:
    protected void Button1_Click(object sender, EventArgs e)
    {
        string filename = FileUpload1.FileName;
        string path = Server.MapPath("TextData/");
        FileUpload1.PostedFile.SaveAs(path+ FileUpload1.FileName);
        Response.Write("<script> window.top.callBack('" + path + FileUpload1.FileName + "');</script>");//调用主页面的js,返回
    }
4:Default.aspx主页面里面callBack函数,并添加一个隐藏控件,处理返回值。
返回值及图片新上传的路径复制给 隐藏控件,然后服务器端获的隐藏字段的值,即为新上传图片路径
function callBack(qfile) {
<span style="white-space:pre">	</span>document.getElementById('<% =ReturnValue.ClientID %>').value = qfile;
} 

<input id="ReturnValue" type="hidden"  runat="server" />



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值