使用带有razor页面的上传文件时出现此错误:
指数超出范围。必须是非负数且小于集合的大小。 参数名称:index
此处发生错误
var uploadedFile = Request.Files[0];
控制器:
[HttpPost]
public ActionResult Create(Category category)
{
if (ModelState.IsValid)
{
var fileSavePath = "";
var fileName = "";
var uploadedFile = Request.Files[0];
fileName = Path.GetFileName(uploadedFile.FileName);
fileSavePath = Server.MapPath("../../Uploads/" + fileName);
uploadedFile.SaveAs(fileSavePath);
db.Categories.Add(category);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(category);
}
查看:
@using (Html.BeginForm("Create", "Category", FormMethod.Post,
new { enctype = "multipart/form-data" }))
{
<div class="editor-label">
@Html.LabelFor(model => model.Path)
</div>
<div class="editor-field create-Bt3">
@FileUpload.GetHtml(
initialNumberOfFiles: 1,
allowMoreFilesToBeAdded: false,
includeFormTag: false,
uploadText: "Upload")
</div>
}
答案 0 :(得分:2)
错误表示Request.Files
集合不包含任何项目。
您可以使用Count
属性查看上传的文件数量:
if (Request.Files.Count > 0) {
var uploadedFile = Request.Files[0];
}
与fiddler核实浏览器发送的内容 - 可能是FileHelper