2

カミソリページでアップロードファイルを使用すると、このエラーが発生しました:

インデックスが範囲外でした。負ではなく、コレクションのサイズより小さくなければなりません。パラメータ名:インデックス

ここでエラーが発生しました

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

1 に答える 1

2

エラーは、Request.Filesコレクションにアイテムが含まれていないことを意味します。

Countアップロードされたファイルの数は、プロパティで確認できます。

if (Request.Files.Count > 0) {
    var uploadedFile = Request.Files[0];
}

ブラウザが送信しているものをフィドラーで確認してください - おそらくそれはFileHelper

于 2012-11-22T08:37:44.130 に答える