下午好,
我是ASP.NET MVC的新手。我的要求是使用MVC创建一个小型Web应用程序,可以使用描述和标题上传多个文件。我在网上发现了很多与单个或多个文件上传相关的文章,但仍然无法找到那些像我的要求那样说话的文章。
描述和文件选择块可以具有与用户一样多的数量。他们可以在单个上传按钮上单击上传多个带有说明的文件。
我确实需要你的专业知识来帮助我。 最好的问候,
Veasna
答案 0 :(得分:0)
我认为这不是MVC问题。
您需要的是发送一份表格,该表格将发送多个文件,并且还会发送与每个文件相关的数据(在这种情况下是每个文件的描述)。
实际上,对于多部分表单数据,您可以发送此类信息,但是,之前的经验告诉我,通过多部分表单上传的多个文件通常会给您带来很多麻烦。
如果您的目标用户需要使用某种现代浏览器,我建议您使用HTML5的javascript文件API,这非常有用且功能强大。
您可以使用客户端代码来识别用户正在选择的文件,分配给每个文件的描述值以及使用所有数据构建JSON对象。
构建数据包后,您可以通过AJAX调用将其发送到服务器。 在控制器上,您可以拥有一个管理此JSON数据包的操作,并以业务模型定义它的方式保存它。
您在这里有一篇关于javascript文件API的优秀文章:http://www.html5rocks.com/en/tutorials/file/dndfiles/
希望这有帮助。
答案 1 :(得分:0)
根据您的说明,您可以浏览以下链接以供参考: -
Multiple file upload with titles
还有一些与之相关的代码。
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;
}
}
protected void btnEnter_Click(object sender, EventArgs e)
{
if (txtImages.Text != "")
{
pnltwo.Visible= true;
}
var imageCount = Convert.ToInt32(txtImages.Text);
var list = new List<string>(imageCount);
list.AddRange(Enumerable.Repeat(String.Empty, imageCount));
ImagesGrid.DataSource = list;
ImagesGrid.DataBind();
}
<强> ASPX 强>
<asp:Panel ID="pnlone" runat="server">
<asp:Label ID="lbltext" runat="server" Text="Enter the no of images to upload"></asp:Label>
<asp:TextBox ID="txtImages" CssClass="form-control" runat="server"></asp:TextBox><br />
<asp:RequiredFieldValidator ID="reqtxt" runat="server" CssClass="error-class" ControlToValidate="txtImages" ErrorMessage="Please enter value"></asp:RequiredFieldValidator>
<asp:Button ID="btnEnter" runat="server" CssClass="btn btn-prm" CausesValidation="true" OnClick="btnEnter_Click" Width="75px" Text="Upload" />
</asp:Panel>
<asp:Panel ID="pnltwo" runat="server">
<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>
<br />
<asp:Button ID="SaveButton" Text="Save" CssClass="btn btn-prm" CausesValidation="false" runat="server" OnClick="SaveButton_Click" />
</asp:Panel>