3

明らかな質問のように思えますが、私はまだ混乱しています。ページに asp FileUpload コントロールがありますが、これはたまたま UpdatePanel 内にあります。UpdatePanel を UpdateMode="Conditional" に設定しています。また、トリガー セクションにポストバック トリガー (asyncpostback トリガーではない) を設定しました。ボタンをクリックすると、ファイルがデータベースにアップロードされ、データレイヤーで処理されます。最初の試行では、PostedFile が null であるため失敗しますが、ページがポストバックを実行することがわかります (これにより、本質的にダウンロード コントロールがクリア/リセットされます)。ファイルを再度アップロードしようとすると、問題ありません。私の最初の考えは、実際にバイトを取得するためにポストバックが必要だったからですよね? そのロジックの下で、別のファイルをアップロードしようとすると、実際には前のファイルがアップロードされると考えました。それはしませんでした; 新しいファイルをアップロードしました。だから、私は混乱しています。

アップロード方法は次のとおりです。

protected void ReplaceDoc()
{
    var data = ulReplaceDoc.FileBytes;
    var fileName = ulReplaceDoc.PostedFile.FileName;
    if (MocApi.ReplaceWorkingDocument(_request.MocRequestID, _currentUser, fileName, data))
    {
        //refresh files
        ShowFiles();
    }
}

かなり簡単です。ファイルを取得してアップロードし(データベースで UPDATE クエリを実行してファイルを変更します)、データソースを更新して新しいファイルを表示することになっています。

だから私の質問はこれです:なぜ最初の試行でしか失敗しないのですか? また、この効果を達成するためのより良い方法は何でしょうか?

4

1 に答える 1