2011-01-15 9 views
2

私は、Webサイトのユーザーが複数の画像を一度にアップロードできるASP.NET UserControlを構築しています。私は、ユーザーがFileUploadコントロールの量を入力してからC#からasp:Panelコントロールに動的に追加することで、古い方法でやっています。ASP.NETは動的に追加されたFileUploadコントロールからファイルを保存します

これは機能しますが、FileUploadの値/ファイルは、ユーザーが[保存]ボタンをクリックしたときに保存されません。どのようにしてこの問題について正確に取り組んでいますか?

するFileUploadコントロールの量を指定するための私のコードは、望んでいた:

protected void btnSubmitImageAmount_Click(object sender, EventArgs e) 
{ 
    int amountOfControls = Convert.ToInt32(txtImageAmount.Text); 

    for (int i = 0; i < amountOfControls; i++) 
    { 
     FileUpload fUl = new FileUpload(); 
     Label lblLineBreak = new Label(); 
     lblLineBreak.Text = "<br />"; 
     fUl.ID = i.ToString(); 
     fUl.Visible = true; 
     pnlUploadControls.Controls.Add(fUl); 
     pnlUploadControls.Controls.Add(lblLineBreak); 
    } 
} 

保存ボタンのコード:

protected void btnCreateStory_Click(object sender, EventArgs e) 
{ 
    List<Media> images = new List<Media>(); 

    foreach (Control ctrl in pnlUploadControls.Controls) 
    { 
     if (ctrl is FileUpload) 
     { 
      FileUpload fUl = (FileUpload)ctrl; 
      Media media = UmbracoSave(fUl, storydDoc.Id); 
      if (media != null) 
      { 
       images.Add(media); 
      } 
     } 
    } 
} 

誰もがこの問題を解決する方法のいずれかのヒントを得ましたか。 :)

ありがとうございます!

答えて

1

ポストバックごとに動的コントロールを再作成する必要があります。存在しなくなった場合、

thisを読んで、page life cycleについて詳しく知りたい。

+0

Hey Oded、あなたの助けとリンクありがとう!私は実際にあなたの最初のリンクを読んで、必要な量のコントロールを保存するためにセッションを使って作業するようにしました。しかし、金額が5より大きければクラッシュします。(私はそれをもう少し調べなければなりませんね! – bomortensen

0

ダイナミック FileUploadは、Page.Form.Enctype = "multipart/form-data"を手動で設定することを忘れないでください。これは、ファイルをPOST経由で送信できるようにするエンコーディングタイプです - 詳細はWhat does enctype='multipart/form-data' mean?を参照してください。