UpdatePanelは、ファイルアップロードPostedFile値を取得します

UpdatePanelのは、現在のファイルのアップロードをサポートしていません。私は、私は非常に使いやすい本当に、テストした2つの方法がありますが、確認しました。

:ソリューションの実施形態であるのUpdatePanelはPostBackTrigger提供

<ASP:UpdatePanelのID = "UpdatePanel1"にrunat = "サーバー">
<ContentTemplate>
<ASP:するFileUpload ID = "FileUpload1"にrunat = "サーバー" />
<ASPを:ボタンのIDを= "Button1を"にrunat = "サーバー "テキスト= " クリック時= "のButton1 Clickを"アップロード" />
</ ContentTemplate>
<トリガー>
<ASP:PostBackTrigger ControlID = "Button1を" />
</トリガ>
</ ASP:のUpdatePanel>
とあなたは、このようなASPを追加するなど、UpdatePanelの上のトリックを行いたい場合は、次のパネル、表示または非表示には、ボタンイベントによってトリガすることができ、あなたはFileUpload1を見つけるだろうし、ファイルを見つけることができません。

実際には、理由は非常に単純である、のUpdatePanelの内容はXMLHTTPリアルタイムで満たされている、あなたはショーの前に彼を入れ、空でページのソースコードを表示します。ダイナミックコントロールは何の問題、共通のデータを更新しませんが、ファイルをアップロードすることは死ぬことを、私の解決策は、ASPの代わりに通常のdiv要素を使用することです:




{
文字列スクリプト= "のdocument.getElementById( 'パネル1')Style.display = '';";
ScriptManager.RegisterStartupScript(this.Page、this.GetType()、真の"ShowPanel"、スクリプト、);
}
プライベートボイドClosePanel ()
{
列=スクリプト"のdocument.getElementById( 'パネル1')style.display = 'なし';";。
ScriptManager.RegisterStartupScript(this.Page、this.GetType()、 "ClosePanel"、スクリプト、真の);
}
[スイッチ] http://hi.baidu.com/honfei/blog/item/f0902b1190b3787bcb80c46c.html

スキームII:

ターンします。http://www.cnblogs.com/dlwang2002/archive/2006/07/11/447722.html

中ので、UpdatePanelのすべてのポストバックはちょうどXMLHTTPリクエストとViewStateの、ページ全体をポストバックない:最後の(アトラスと一部の専門家は、バグやアトラスを疑う探る)と言えば、のFileUploadの使用が困難なアトラス内の添付ファイルをアップロードしていますするFileUploadサーバー側のファイルを得ることができませんでした。

ファイルをアップロードするには、新しいウィンドウをポップアップ:回避策最初に考えたのはUpdatePanelのを使用するのではありません。UpdatePanelを使用しない新しいウィンドウ。もちろん、このアプローチは、。

今日は突然添付ファイルのアップロードの内側に、それをGmailに思う:背景アップロードファイルを、メッセージ全体ではなく、ページの更新には影響しません、あなたの前を編集します。このモードは、十分なハンサムです!新しいウィンドウを開かずに、ページを取得し、ページが更新されません。

第2の方法は少し優れているかのように、少しコントラスト。したがってFirebugの(AJAXプログラムトラッカー:fireBug0.4)は、プロセス中に発見、Gmailにビットで
<IFRAMEスクロール= "オート" FRAMEBORDER = "0"のonloadは=「(top.js.init)場合{試しますtop.js._IF_OnLoaded( 'V1')
<INPUT TYPE = "ファイル"のonChange = "top.js._CM_OnAttach(ウィンドウ、この)"名前= "f_ephki04a"サイズ= "50" />
彼の添付ファイルのアップロードにあり内部のiframe、いくつかの処理は、コントロールのその後のonchangeイベント

。本当に良い方法ですが
私は、このような治療プログラムを作った:
1:メインのUpdatePanelを使用して、ページ、その後のUpdatePanelは、ファイルアップロードではないコントロールの内部に配置されますが、インラインフレームを
2:新しいページ内のiframeのリンク、そのページには、コントロールがするFileUpload。
3:アップロードした後、結果をアップロードするために、メインページを言われた

直接のFileUploadの例を使用して見える:内部この例では、サーバは、アップロードファイルを見つけることができませんA。
            <アトラス:UpdatePanelのID = "UP1"モード= "条件"にrunat = "サーバー">
                <ContentTemplate>
                    <ASP:するFileUpload ID = "FileUpload1"にrunat = "サーバー" />
                    <ASP:ボタンID = "Button1を"にrunat = 「サーバー」テキスト=「ボタン」クリック時=「のButton1 Click」/>
                 </ ContentTemplate>
            </アトラス:UpdatePanelのは>

どのように我々は達成しない、見て
1:新しいホームページDefault.aspxの
      場所で、アップロード添付ファイルを配置しますUpdatePanelの地域            <アトラス:UpdatePanelのID = "up_attachment"モード= "条件"にrunat = "サーバー">                 <ContentTemplate>                    <インラインフレームID = "ファイル"名= "ファイル" SRC = "attachment.aspx"> </ iframe>の                </ ContentTemplate>             </アトラス:のUpdatePanel>
     





2:新規ページattachment.aspxアップロードファイルにし、その後のFileUploadコントロール置く
の<div>
    <ASP:するFileUpload ID = "FileUpload1"にrunat = "サーバー" />
          <ASP:ボタンID = "Button1を"にrunat = "サーバー"テキストを=「OK」クリック時=「のButton1 Click」/>
    </ div>の
3:JS状況を報告してアップロードし、ファイルをアップロードし、内部attachment.aspx後のメインページを呼び出します。これは、関数プロトタイプである:
    <SCRIPT>
      window.top.callBack(filename)で、
    </スクリプト>
。4:Default.aspxのにこの機能を増大させるホームページ、値に戻る

    <SCRIPT>
     関数コールバック(filename)で
     {
        のdocument.getElementById( ' Attach1「)のinnerHTML = fileNameに;.
     }
    </ SCRIPT>

ます。https://www.cnblogs.com/zhangchenliang/archive/2013/05/30/3108394.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_33858336/article/details/93494856