3

@Html.BeginFormのビューには、ユーザーが画像をアップロードして画像に関する詳細を追加できるようにすることを想定しています。

ビューは次のとおりです。

@Html.BeginForm("SaveImage", "Listing", FormMethod.Post, new { enctype = "multipart/form-data" }))) {
<div id="modalAddImage" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
                    <h3 id="myModalLabel">Modal header</h3>
    </div>
    <div class="modal-body">
    <p>Image</p>
    <input type="file" name="file"></input>

     @foreach (Image translation in Model.Listing.Images)
     {
        @Html.TextBoxFor(m => m.Description)
     }
     </div>
     <div class="modal-footer">
     <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
     <button class="btn btn-primary">Save changes</button>
 </div>
</div>
}

私は@Html.BeginFormこれの直前に別のものを持っています。それは何か他のもののためです。

これは私のコントローラーです:

    [HttpPost]
    public ActionResult SaveImage(HttpPostedFileBase file)
    {
        if (file!= null && file.ContentLength > 0)
        {
            var fileName = Path.GetFileName(file.FileName);
            var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
            file.SaveAs(path);
        }

        return View("Maintain");
    }

ブレークポイントをに入れるとSaveImage、ファイルは常にnullになります。大きい画像と小さい画像の両方をアップロードしようとしました。

誰かが私がひどく間違っているところを見ることができますか?

4

2 に答える 2

4

あなたは単にこのようにすることができます:

[HttpPost]
public ActionResult SaveImage(HttpPostedFileBase file)
{
     if (Request.Files.Count > 0)
     {
        foreach (string upload in Request.Files)
        {
           if (upload != null)
           {
              var fileName = Path.GetFileName(file.FileName);
              var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);      
              Request.Files[upload].SaveAs(path);

           }
        }
     }
    return View("Maintain");
}
于 2012-09-24T10:06:00.210 に答える
1

同じ問題が発生していましたが、フォームで指定していないことに気付きました(enctype = "multipart / form-data")

于 2013-06-13T09:12:33.787 に答える