我使用ASP.NET MVC4做了一个简单的应用程序。 我正在尝试将多行数据插入到数据库中。我所做的就是单行工作正常。 单行被插入但是在多行中我遇到了问题...数据没有从客户端传递到服务器端(由表单集合对象捕获),并且循环也没有正常工作。
我的观点是:
<table style="width:100%" id="tbldata">
<tr>
<th>Document </th>
<th>Sem/Year(ifapplicable)</th>
<th>File</th>
</tr>
@for (int i = 0; i < 7; i++ )
{
<tr class="document">
<td style="width:40%">@Html.DropDownListFor(m => m.selectdocId, ViewBag.selectdocId as IEnumerable<SelectListItem>,"--Select--", new { @id="docid" +i , @class="Doctype"})</td>
<td style="width:10%">@Html.TextBoxFor(m => m.sem, new { @id="sem" +i, @class="semid"})</td>
<td style="width:40%"><input type="file" multiple="" name="file" value="Browse" /></td>
</tr>
}
</table>
我的控制器是:
public ActionResult display(FormCollection collection, IEnumerable<HttpPostedFileBase>file )
{
for(int i=0; i<7; i++)
{
int semid = Convert.ToInt32(collection["sem" + i]);
int docid = Convert.ToInt32(collection["docid" + i]);
tbldocumentdetail doc = new tbldocumentdetail();
doc.sem = Convert.ToInt32(semid);
doc.selectdocId = Convert.ToInt32(docid);
db.tbldocumentdetails.Add(doc);
db.SaveChanges();
}
foreach (var item in file)
{
if (item == null && item.ContentLength < 0)
{
ModelState.AddModelError("file", "please uploded your file");
}
else
{
var filename = Path.GetFileName(item.FileName);
var path = Path.Combine(Server.MapPath("~/Content/savedoc"), filename);
item.SaveAs(path);
tbldocumentdetail doc = new tbldocumentdetail();
doc.fileName = filename;
string a = "~/Content/savedoc" + filename;
doc.path = a;
db.tbldocumentdetails.Add(doc);
db.SaveChanges();
}
答案 0 :(得分:0)
为此,您可以使用IEnumerable作为POST操作参数,而不是使用表单集合。您可以参考以下链接