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" />



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章