2011-01-14 7 views
0

Ich baue eine Website (umbraco basiert), wo die Benutzer mehrere Bilder zu ihren Beiträgen hochladen können. Was ich bisher habe, ist:ASP.NET Multiple Fileupload

<asp:TextBox MaxLength="1" Width="29px" runat="server" ID="txtImageAmount" />&nbsp; 
<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 
     <asp:Button ID="btnSubmitImageAmount" runat="server" Text="Vis upload felter" 
      onclick="btnSubmitImageAmount_Click" /> 

     <asp:Label Visible="false" ID="lblImageAmountError" ForeColor="Red" runat="server" Text="Maks 3 billeder"></asp:Label> 
     <asp:Panel ID="pnlUploadControls" Visible="false" runat="server"></asp:Panel> 
    </ContentTemplate> 
</asp:UpdatePanel> 

So ist der Benutzer in der Lage ist, die Menge von Fileupload-Boxen (max 3 though) auf der Website zu wählen.

Mein C# sieht wie folgt aus:

protected void btnSubmitImageAmount_Click(object sender, EventArgs e) 
{ 
    int amountOfControls = Convert.ToInt32(txtImageAmount.Text); 
    if (amountOfControls <= 3) 
    { 
     for(int i = 0; i < amountOfControls; i++) 
     { 
      FileUpload fUl = new FileUpload(); 
      fUl.ID = i.ToString(); 
      fUl.Width = 300; 
      Label lblLinebreak = new Label(); 
      lblLinebreak.Text = "<br />"; 
      pnlUploadControls.Controls.Add(fUl); 
      pnlUploadControls.Controls.Add(lblLinebreak); 
      pnlUploadControls.Visible = true; 
     } 
    } 
    else 
    { 
     lblImageAmountError.Visible = true; 
    } 
} 

Also im Grunde bin ich das Hinzufügen eines neuen Fileupload-Steuerelement in das Panel je nachdem, wie viele der Nutzer will.

Nun, in meiner Save-Button habe ich den folgenden Code:

List<Media> images = new List<Media>(); 

    foreach (FileUpload fUl in pnlUploadControls.Controls) 
    { 
     Media m = UmbracoSave(fUl); 
     if (m != null) 
     { 
      images.Add(m); 
     }  
    } 

    if (images.Count > 0) 
    { 
     RelationType ad2media = RelationType.GetByAlias("ad2media"); 
     foreach (Media img in images) 
     { 
      Relation.MakeNew(adDoc.Id, img.Id, ad2media, adDoc.Text + " is related to " + img.Text); 
     } 
    } 

Ich habe versucht, wenn die Menge der Kontrollen in der Platte zu prüfen, gleich 0 ist und es scheint, es ist .. Die Seltsame Wenn ich überprüfe, ob das von der UmbracoSave-Methode zurückgegebene Medienelement null ist, ist dies nicht der Fall.

Auch heißt es, dass die Liste (Bilder) Anzahl 0 ist ..

Kann jemand etwas Licht in diese? :-)

Jede Hilfe wird sehr geschätzt!

Alles Gute,

Bo

Antwort

3

Sie können keine Standard-Fileupload-Steuerelement in einem Update setzen. Es funktioniert einfach nicht. Sehen Sie sich eine AJAX-kompatible Datei-Upload-Komponente an.

+0

Ja. Sollte Gecko Uploadify für Umbraco verwenden können: http://our.umbraco.org/projects/website-utilities/gecko-uploafify – sebastiaan

+0

Hallo ck, danke für deine Antwort :) Ich dachte, du könntest über jeden asp.net platzieren Kontrolle in einem UpdatePanel, aber naja .. Ich habe versucht, das Updatepanel zu löschen, aber auf meinem Save Button click -Ereignis sagt mir immer noch, dass mein Panel (pnlUploadControls) Kontrollen Sammlung 0 ist :( – bomortensen

+0

@sebastiaan: Danke Kumpel, obwohl dies fällig ist auf der Website selbst passieren und nicht in der Umbraco-Backend-Administration. – bomortensen