Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 多个图片上传不同的标题_C#_Asp.net - Fatal编程技术网

C# 多个图片上传不同的标题

C# 多个图片上传不同的标题,c#,asp.net,C#,Asp.net,我的要求是。我将通过FileUpload一次上传3-4张图片。每个图像都有自己的标题,说明等 现在我的问题是,无论何时上传,我都会为图片提供一个标题列。但是当我上传3-4张图片时,所有图片的标题和描述都是一样的 这是我的HTML,用于通过FileUpload上传图像 <tr> <td style="vertical-align: top;"> <asp:label cssclass="control-label" id="Label1" r

我的要求是。我将通过
FileUpload
一次上传3-4张图片。每个图像都有自己的
标题
说明

现在我的问题是,无论何时上传,我都会为图片提供一个
标题
列。但是当我上传3-4张图片时,所有图片的
标题和
描述都是一样的

这是我的HTML,用于通过
FileUpload
上传图像

 <tr>
    <td style="vertical-align: top;">
        <asp:label cssclass="control-label" id="Label1" runat="server">Image Title</asp:label>
    </td>
    <td>
        <div class="control-group">
            <div class="controls">
                <asp:textbox id="txtImagetitle" cssclass="form-control" runat="server" validationgroup="AddNew"></asp:textbox>
                <asp:requiredfieldvalidator cssclass="error-class" id="RequiredFieldValidator1" runat="server"
                    controltovalidate="txtImagetitle" errormessage="Please add the image title" validationgroup="AddNew"></asp:requiredfieldvalidator>
            </div>
        </div>
    </td>
</tr>
<tr>
    <td style="vertical-align: top;">
        <asp:label cssclass="control-label" id="Label2" runat="server">Image description</asp:label>
    </td>
    <td>
        <div class="control-group">
            <div class="controls">
                <asp:textbox id="txtImagedesc" cssclass="form-control" runat="server" validationgroup="AddNew"></asp:textbox>
                <asp:requiredfieldvalidator cssclass="error-class" id="RequiredFieldValidator2" runat="server"
                    controltovalidate="txtImagedesc" errormessage="Please add the image description"
                    validationgroup="AddNew"></asp:requiredfieldvalidator>
            </div>
        </div>
    </td>
</tr>
<tr>
    <td style="vertical-align: top;">
        <asp:label cssclass="control-label" id="Label3" runat="server">Image upload</asp:label>
    </td>
    <td>
        <div class="control-group">
            <div class="controls">
                <asp:fileupload id="FileUpload1" runat="server" allowmultiple="true" />
                <asp:requiredfieldvalidator cssclass="error-class" id="RequiredFieldValidator3" runat="server"
                    controltovalidate="FileUpload1" errormessage="Please add the gallery date" validationgroup="AddNew"></asp:requiredfieldvalidator>
            </div>
        </div>
    </td>
</tr>

看起来只有一组输入绑定到一个文件上载,并且启用了多个

您可以关闭“多个”并允许用户添加这些图像的报告集,也可以通过上载在gridview中编辑标题等


您还可以支持一个“保留单元格”,用户可以在该单元格中上载信息,然后在将信息保存到数据存储之前必须输入该信息。

您无法提供不同的标题/描述,因为您没有提供该标题/描述的选项。期间。
您必须使用多个文件上载控件。这也很棘手,因为
asp:FileUpload
控件在回发后不会保持其状态

所以,我能看到的解决方案是由两部分组成的。创建两个面板,并在页面加载时隐藏第二个面板

第一部分
在页面的第一个面板中放置这样的标签、文本框和按钮。
当用户输入一个值(例如10)并启动
EnterButton\u时,单击
关闭面板1并打开面板2

第二部分

在面板2上,像这样放置GridView

<asp:GridView ID="ImagesGrid" runat="server" AutoGenerateColumns="false">
    <Columns>
        <asp:TemplateField HeaderText="Sl No">
            <ItemTemplate><%# Container.DisplayIndex + 1 %></ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Title">
            <ItemTemplate>
                <asp:TextBox ID="txtTitle" runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Description">
            <ItemTemplate>
                <asp:TextBox ID="txtDescription" runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="File">
            <ItemTemplate>
                <asp:FileUpload ID="flUpload" runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
<asp:Button ID="SaveButton" Text="Save" runat="server" OnClick="SaveButton_Click"/>

请粘贴您的代码-behind@naveen:添加了代码隐藏,请参阅我的更新问题我想要多个上载选项。!!除非你设计了一个等待单元,否则没有办法让最终用户输入这些信息。好的,还有其他方法吗?多个上传控件。每个上载控件一个文件。允许用户添加他们想要的数量。我不希望这样,客户端不会一次又一次地上传。他们想要
多个
选项来实现您的步骤,但它总是打开第二个面板,即
网格视图
,有十行。如何根据输入到文本框中的值动态设置它?我得到了它,我写了
imageCount
<asp:GridView ID="ImagesGrid" runat="server" AutoGenerateColumns="false">
    <Columns>
        <asp:TemplateField HeaderText="Sl No">
            <ItemTemplate><%# Container.DisplayIndex + 1 %></ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Title">
            <ItemTemplate>
                <asp:TextBox ID="txtTitle" runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Description">
            <ItemTemplate>
                <asp:TextBox ID="txtDescription" runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="File">
            <ItemTemplate>
                <asp:FileUpload ID="flUpload" runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
<asp:Button ID="SaveButton" Text="Save" runat="server" OnClick="SaveButton_Click"/>
// the idea is to create an empty gridview with number of rows client selected
protected void EnterButton_Click(object sender, EventArgs e)
{
    //in this, 10 has been entered    
    var imageCount = Convert.ToInt32(txtImageCount.Text);
    //var list = new List<string>();

    //for (int i = 0; i < imageCount; i++)
    //{
    //    list.Add(string.Empty);
    //}
    var list = new List<string>(10);
    list.AddRange(Enumerable.Repeat(String.Empty, imageCount));
    ImagesGrid.DataSource = list;
    ImagesGrid.DataBind();

    //TO DO: hide panel1 and make panel2 visible
}
protected void SaveButton_Click(object sender, EventArgs e)
{
    foreach (GridViewRow row in ImagesGrid.Rows)
    {
        var title = row.FindControl("txtTitle") as TextBox;
        var description = row.FindControl("txtDescription") as TextBox;
        var imageFile = row.FindControl("flUpload") as FileUpload;
        string filename = Path.GetFileName(imageFile.FileName);
        imageFile.SaveAs(Server.MapPath("/GalleryImages/" + filename));
        //TO DO: write save routine
    }
}