2012-03-12 11 views
1

私の方法FileUpload.HasFileは常にnullである理由私は疑問に思って...FileUpload.HasFileは常に

これは私が使用するXAML nullです。

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
    </asp:ScriptManager> 
    <asp:UpdatePanel ID="UpdatePanelAddFiles" runat="server" UpdateMode=Conditional> 
     <Triggers> 
      <asp:AsyncPostBackTrigger ControlID="LkUpload" /> 
     </Triggers> 
     <ContentTemplate> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
    <asp:Panel ID="PanelAddFiles" runat="server"> 
     <div class="PanelAddFiles"> 
      <asp:LinkButton ID="LkUpload" runat="server" OnClick="LkUpload_Click" Visible="false">Upload</asp:LinkButton> 
      <asp:FileUpload ID="FileUpload1" runat="server" Visible="false" /> 
     </div> 
    </asp:Panel> 

編集:

私はページのフォーム、およびまた、私はここに使う形式があるため、問題の一つは、この

<form action="Upload/Default.aspx" enctype="multipart/form-data" method="post" id="frm"> 
    <asp:ScriptManager ID="ScriptManager1" runat="server"> 
    </asp:ScriptManager> 
    <asp:UpdatePanel ID="UpdatePanelAddFiles" runat="server" UpdateMode=Conditional> 
     <Triggers> 
      <asp:AsyncPostBackTrigger ControlID="LkUpload" /> 
     </Triggers> 
     <ContentTemplate> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
    <asp:Panel ID="PanelAddFiles" runat="server"> 
     <div class="PanelAddFiles"> 
      <asp:LinkButton ID="LkUpload" runat="server" OnClick="LkUpload_Click" Visible="false">Upload</asp:LinkButton> 
      <!--<asp:FileUpload ID="FileUpload1" runat="server" Visible="false" />--> 
      <ajaxToolkit:AsyncFileUpload runat="server" ID="FileUpload1" /> 
      <asp:Panel ID="Dropbox" runat="server"> 
       <div class="dropbox"> 
        <div class="dragzone"> 
        </div> 
        <span class="message"> 
       drop files here to upload 
      </asp:Panel> 
     </div> 
    </asp:Panel> 
    </form> 
</div> 

になると思います。私はそれがIEであるかどうかにかかわらず、私が表示するかどうかのDropboxを持っています。だから私はちょうどIEのfileuploadを表示します。 これはもう2つのフォームが存在しているためです。

私はこのAjaxToolkitを使用しますか?

+0

が削除 '可視= "false" は' 'ASPのために:FileUpload'制御 – Shai

答えて

3

次のコードを使用:背後

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="futest.aspx.cs" Inherits="erpweb.futest" %> 

<!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="smTest" runat="server"></asp:ScriptManager> 
    <asp:UpdatePanel ID="upTest" runat="server"> 
     <ContentTemplate> 
      <ajaxToolkit:AsyncFileUpload ID="AsyncFileUpload1" runat="server" 
       onuploadedcomplete="AsyncFileUpload1_UploadedComplete" /> 
     </ContentTemplate> 
    </asp:UpdatePanel> 

    </div> 
    </form> 
</body> 
</html> 

コード:

protected void AsyncFileUpload1_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e) 
    { 
     if (AsyncFileUpload1.HasFile) 
     { 
      //do save process here 
     } 
    } 
6

FileUploadはUpdatePanel内では機能しません。 は、ASPNET AJAX control ToolkitのAsyncFileUploadを使用する必要があります。


あなたがAsyncFileUploadを使用する場合は、あなたがそれはあなたのページまたはマスターページに配置され、タグで右のparamsを設定する必要があります。

<form id="form1" runat="server" enctype="multipart/form-data" method="post"> 

あなたが右のenctypeを設定しない場合とメソッドUploadedCompleteはを決して実行しません。FileUpload.FileBytesからFileUpload.HasFileはUploadedCompleteの実行中にのみtrueを返します。


さらに、プレシウス版のAsyncFileUploadはChromeで動作しませんでした。実際のバージョンで問題が解決しました。

+0

だからのFileUploadを使用する別の方法がありますこの更新パネルとその作業がなければ? – Kiwimoisi

+0

FileUpoadはupdatepanelの外側に置く必要があります。ページの完全なポストバックが必要です。アップデートパネルがない場合FileUploadが動作する –

+0

アップデートパネルがなく、

Upload
の場合、FileUploadは常にnullです – Kiwimoisi