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