ASP.NET несколько загрузок файлов - PullRequest
0 голосов
/ 14 января 2011

Я создаю веб-сайт (на основе umbraco), где пользователи могут загружать несколько изображений в свои сообщения.На данный момент у меня есть:

<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>  

Таким образом, пользователь может выбрать количество полей загрузки файла (максимум 3) на сайте.

Мой C # выглядит так:

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;
    }
}

Итак, в основном я добавляю новый элемент управления FileUpload в Panel в зависимости от того, сколько пользователь хочет.

Теперь в моей кнопке Сохранить у меня есть следующий код:

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);
        }
    }

Я пытался проверить, равно ли количество элементов управления на панели 0, и кажется, что это ... Странная вещь, если я проверяю, является ли элемент Media, возвращенный из метода UmbracoSave, нулевым,это не так.

Кроме того, он говорит, что счетчик List (images) равен 0 ..

Может кто-нибудь пролить свет на это?: -)

Любая помощь очень ценится!

Всего наилучшего,

Бо

1 Ответ

3 голосов
/ 14 января 2011

Нельзя поместить стандартный элемент управления FileUpload в UpdatePanel.Это просто не работает.Посмотрите на AJAX-совместимый компонент загрузки файлов.

...