Ad Code

Responsive Advertisement

Ticker

6/recent/ticker-posts

.net使用UpdatePanel時FileUpload控制項失效

Reference : http://www.cnblogs.com/caicainiao/archive/2010/12/08/1900377.html

1.使用UpdatePanel後,FileUpload的HasFile始終為false,無論你是否選中了上傳文檔!

2.使用UpdatePanel後,在後台進程中,你在使用Response.Write(“”)看看,不給你JS錯才怪,而且打印不出你要的東西!

方案一:設置ScriptManager 的EnablePartialRendering=“false” 即可! 缺點:同一個頁面上的多個UpdatePanel不可以獨自刷新了.另外,當你的UpdatePanel中存在Validator (驗證控件)的話,會造成整個頁面postback


<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="false">
    </asp:ScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:FileUpload ID="fu" runat="server" />
     </ContentTemplate>
    </asp:UpdatePanel>
方案二: 來源於:http://marss.co.ua/FileUploadAndUpdatePanel.aspx

還記得UpdatePanel 裏面的Triggers?如果忘記了真的該好好複習了! PostBackTrigger 指明PostBack提交的按鈕ID,還有一個<asp:AsyncPostBackTrigger/>這個當然是異步了哦!PostBackTrigger 他只回發該UpdatePanel 裏面的東西,不會影響其他UpdatePanel 的回發

使用 PostBackTrigger 控件可使 UpdatePanel 內部的控件導致回發,而不是執行異步回發。

UpdatePanel中使用FileUpload具體見:http://msdn.microsoft.com/zh-cn/library/system.web.ui.postbacktrigger.aspx

<form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <asp:UpdatePanel runat="server" ID="up1">
    <ContentTemplate>
        <asp:FileUpload ID="fu" runat="server" />
        <asp:Button ID="BtnUpload" runat="server" Text="Upload" onclick="Btn_Click" />
     </ContentTemplate>
     <Triggers>
        <asp:PostBackTrigger ControlID="BtnUpload" />
     </Triggers>
    </asp:UpdatePanel>
    </form>