2011-06-07 17 views
12

私はUpdatePanel内にFileUploadコントロールを持っています。私は正常に完全なポストバックを行うためにscriptmanagerとアップロードボタンを登録しました。私が持っている唯一の問題は、FileUpload.HasFileが常にnullを返すことです。 注:FileUploadコントロールをupdatepanelの外に移動すると、すべてが動作します。これには解決策または回避策がありますか?FileUpload.PostedFileは常にUpdatePanel内でnullです

ありがとうございました。

+1

[UpdatePanelとUploadFileコントロールがうまく動作しません](http://stackoverflow.com/questions/6225545/updatepanel-with-uploadfile-control-doesnt-work-well) – vcsjones

+0

本当は..... – Steven

+0

[AsyncFileUpload-Control](http://www.asp.net/ajax/ajaxcontroltoolkit/samples/asyncfileupload/asyncfileupload.aspx)を使用します。 –

答えて

12

FileUploadコントロールをUpdatePanelに配置することはできますが、AsyncPostBackTriggerではなくPostBackTriggerを使用する必要があります。私は最近、このアプローチを使用し、両方のタイプのトリガーを組み合わせました。 AsyncPostBackTrigger他のすべてのフォームフィールドのために使用している間

<Triggers> 
     <asp:PostBackTrigger ControlID="btnSave" /> 
     <asp:AsyncPostBackTrigger ControlID="btnAsyncSave"/> 
    </Triggers> 

PostBackTriggerはFileUploadsのために使用しました。

+1

マイボタンがファイル名やその他の値をデータベースに保存しています。そのidが 'btnSave'であれば、ControlIDはP​​ostBackTriggerに、AsyncPostBackTriggerには何があるべきですか?あなたのコードは2つのボタンがあるようですね? – SMI

+0

私のコードは、UpdatePanel内部のFileUploadコントロールの具体例です。これは、AsyncPostBackTriggerではなくPostBackTriggerでのみ機能します。 FileUploadではないAsyncrounslyを使用していた他のコントロール用のボタンが2つあります。 –

+0

ええ、それを持って、感謝:) – SMI

3

これはMSAjax 1.0の古い問題です。 FileUploadコントロールは、パネルの更新とスクリプトマネージャの動作と互換性がありません。ファイルアップロードによって、データストリームが変更され、スクリプトマネージャがチョークされます。それがうまくいく唯一の方法は、ファイルアップロードコントロールを更新パネルの外に置くことです。ページ上にファイルアップロードコントロールに依存する他のコントロールがある場合は、ポストバックトリガーの追加を設定する必要があります。

5

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で動作しませんでした。実際のバージョン(4.1.50731.0)はこの問題を解決しました。

0
<Triggers> 
     <asp:PostBackTrigger ControlID="btnSave" /> 
</Triggers> 

更新パネルの外にファイルアップロードコントロールがあります。ページ上にファイルアップロードコントロールに依存する他のコントロールがある場合は、ポストバックトリガーの追加を設定する必要があります。

関連する問題