1

ページに FileUpload とマルチ コントロールがあります。すべてのコントロールは、FileUpload 以外の updatepanel 内にあります。

ポストバック後、fileupload をビューステートに保存します。

private FileUpload Files
{
    get { return (FileUpload)ViewState["Files"]; }
    set {
        ViewState["Files"] = value;
    }
}


.
.
.
if (ImageFileUpload.HasFile)
 {
    Files = ImageFileUpload;
 }

しかし、私はエラーが発生します

アセンブリ 'System.Web、Version=4.0.0.0、Culture=neutral、PublicKeyToken=b03f5f7f11d50a3a' の 'System.Web.UI.WebControls.FileUpload' と入力すると、シリアル化可能としてマークされません。

4

1 に答える 1

1

短い答えは - これはできません...
FileUpload でポストバックを取得したら、その時点でそれを保存する (または必要なことを行う)必要があります。次のポストバックのストリームを保持できません

あなたができることは次のとおりです。

  1. ファイルをサーバーに保存します。
  2. ファイル名を ViewState に追加して、後でファイルにローカルでアクセスできるようにします。

つまり、次のようなものです。

string filename;
......
// Save file to disk
fileUpload1.SaveAs(filename);
// Keep path to file in ViewState
ViewState["FileLocation"] = filename;
于 2012-12-30T15:54:57.673 に答える