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



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