【问题标题】:ASP.NET Multiple FileuploadASP.NET 多文件上传
【发布时间】:2011-01-14 12:52:14
【问题描述】:

我正在构建一个网站(基于 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 控件。

现在,在我的保存按钮中,我有以下代码:

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,看起来是。奇怪的是,如果我检查从 UmbracoSave 方法返回的媒体项是否为空,它不是t.

此外,它表示列表(图像)计数为 0..

任何人都可以对此有所了解吗? :-)

非常感谢任何帮助!

一切顺利,

【问题讨论】:

    标签: c# asp.net asp.net-ajax file-upload umbraco


    【解决方案1】:

    您不能将标准 FileUpload 控件放在 UpdatePanel 中。它只是行不通。查看一个兼容 AJAX 的文件上传组件。

    【讨论】:

    • 是的。应该能够为 Umbraco 使用 Gecko Uploadify:our.umbraco.org/projects/website-utilities/gecko-uploadify
    • 嗨,谢谢你的回答 :) 我以为你可以将任何 asp.net 控件放在 UpdatePanel 中,但是哦,好吧.. 我试图删除更新面板,但在我的保存按钮上单击事件它仍然告诉我我的面板 (pnlUploadControls) 控件集合为 0 :(
    • @sebastiaan:谢谢伙计,虽然这是发生在网站本身而不是在 Umbraco 后端管理中..
    • @bo 它也应该可以作为标准用户控件使用,但我还没有尝试过,请查看项目论坛并询问是否在该主题上找不到任何内容。
    猜你喜欢
    • 2015-09-17
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 2011-10-12
    • 2010-12-31
    • 2019-01-29
    • 2010-10-08
    • 2015-02-26
    相关资源
    最近更新 更多