UpdatePanel内にFileUploadコントロールがあります。完全なポストバックを実行するために、アップロードボタンをscriptmanagerに正常に登録しました。私が抱えている唯一の問題は、FileUpload.HasFileが常にnullを返すことです。注:FileUploadコントロールをupdatepanelの外に移動すると、すべてがファイルとして機能します。これに対する解決策または回避策はありますか?.
ありがとう。
FileUploadコントロールをUpdatePanelに配置できますが、AsyncPostBackTriggerではなくPostBackTriggerを使用する必要があります。私は最近このアプローチを使用し、両方のタイプのトリガーを組み合わせました。
<Triggers>
<asp:PostBackTrigger ControlID="btnSave" />
<asp:AsyncPostBackTrigger ControlID="btnAsyncSave"/>
</Triggers>
PostBackTriggerはFileUploadsに使用され、AsyncPostBackTriggerは他のすべてのフォームフィールドに使用されました。
FileUploadはUpdatePanel内では機能しません。あなたはASPNET AJAX control Toolkitから AsyncFileUploadを使用する必要があります。
AsyncFileUploadを使用する場合は、ページまたはマスターページに配置されるformタグに適切なパラメーターを設定する必要があります。
<form id="form1" runat="server" enctype="multipart/form-data" method="post">
適切なenctypeとメソッドを設定しないとUploadedCompleteは起動せず、取得できませんFileUpload.FileBytesFileUpload.HasFileは、UploadedCompleteの実行中にのみtrueを返すためです。
さらに、以前のバージョンのAsyncFileUploadはChromeでは機能しませんでした。実際のバージョン(4.1.50731.0)で問題が解決しました。
これは、MSAjax1.0にまでさかのぼる古い問題です。 FileUploadコントロールは、更新パネルの動作方法およびスクリプトマネージャーと互換性がありません。ファイルのアップロードによりデータストリームが変更され、スクリプトマネージャーがチョークします。それが機能する唯一の方法は、更新パネルの外にファイルアップロードコントロールを置くことです。ファイルアップロードコントロールに依存する他のコントロールがページにある場合は、ポストバックの追加トリガーを設定する必要があります。
<Triggers>
<asp:PostBackTrigger ControlID="btnSave" />
</Triggers>
更新パネルの外にファイルアップロードコントロールを配置します。ファイルアップロードコントロールに依存する他のコントロールがページにある場合は、ポストバックの追加トリガーを設定する必要があります。
私が抱えていた問題は、ポストバックをトリガーするボタンがUpdatePanelにあることでした(理由はわかりません)。それらをUpdatePanelの外に移動すると、問題が修正されました。