0

Web ページで ASP ファイル アップロード コントロールを使用しています。ユーザーがファイルをアップロードするまで非表示にしたいので、更新パネルの表示プロパティはデフォルトで false です。ファイルのアップロードを促すボタンをクリックすると、アップロード コントロールが表示され、ファイルを選択できますが、アップロード ボタンをクリックすると、アップロード コントロールの PostedFile プロパティに「オブジェクト参照がインスタンスに設定されていません」というエラーが表示されます。ファイルパスがコントロールに表示されていても、オブジェクトの」。これは、アップロード コントロールが非表示にならない場合に機能します。ソースは次のとおりです。

<asp:UpdatePanel ID="updUploadTestDoc" runat="server" Visible="false">
    <ContentTemplate>
        <asp:Panel ID="pnlUploadTestDoc" runat="server" GroupingText="Upload Test 

Document">
                <asp:Label ID="Label3" runat="server" SkinID="FieldLabel" Text="Select File to Upload : " />&nbsp;&nbsp
                <asp:FileUpload ID="uplUploadFile" runat="server" />
                <br />
                <br />
                <asp:Button ID="btnUpload" runat="server" text="Upload" SkinID="ConfirmButton"  />&nbsp;&nbsp
                <asp:Button ID="btnCancelUpload" runat="server" Text="Cancel" SkinID="CancelButton"  />
            </asp:Panel>
        </ContentTemplate>
        <Triggers>
            <asp:PostBackTrigger ControlID="btnUpload" />
        </Triggers>
    </asp:UpdatePanel>

updUploadTestDoc、pnlUploadTestDoc、およびアップロード コントロール自体を非表示/表示しようとしましたが、すべて同じ結果になりました。エラーが発生する VB コードは次のとおりです。 strAttachmentPath = pUploadControl.PostedFile.FileName

VS 2010、フレームワーク 4.0 を使用しています。これは私の最初の投稿なので、さらに情報が必要な場合はお知らせください。ありがとう。

4

2 に答える 2

1

FileUpload コントロールで値を保持/割り当てることはできません。これは、ブラウザのセキュリティ上の理由によるものです。ファイルの送信は、サーバーへの最初の送信時にのみ可能です。値を保持または割り当てることはできません。

UpdatePanel でも同じことが起こります。Ajax 投稿の送信は非同期で行われるため、ブラウザーはファイルを保持しません。これを読む

解決策は、fileUpload をUpdatePanelの外部に保持することです。

于 2013-08-05T14:11:29.383 に答える
0

更新パネル内で asp:fileupload を使用することはできません。これは asp file upload の問題のようなものなので、更新パネルから取得すると完全に機能します

于 2013-08-05T13:49:49.537 に答える