2017-07-25 10 views
0

このような疑問が多く、StackOverflowの他のすべてのケースを検索して、なぜこれが当てはまり、どれも適用されなかった理由を調べました。私が見ることができるものはこれまでのところ正しいものです。ファイル入力タグの私の名前は、コントローラ内のcreateメソッドの変数名とまったく同じです。私はフォームにenctypeを追加しました。以下を参照してください:HttpPostedFileBaseは毎回ヌルです

HTML:

@using (Html.BeginForm(new { enctype = "multipart/form-data" })) 
{ 
    @Html.AntiForgeryToken() 

    <div class="form-horizontal"> 
     <p><input type="file" name="file" id="file" /></p> 
     <p><input type="submit" value="Update" class="btn btn-default" /></p> 
    </div> 
} 

をコントローラー:

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create(HttpPostedFileBase file) // This is where it's NULL 
    { 
     if (ModelState.IsValid) 
     { 
      IO io = new IO(); 
      if (file != null) 
      { 
       UpdateLog updateLog = io.updateIt(file); 
       db.UpdateLogs.Add(updateLog); 
       db.SaveChanges(); 
      } else 
      { 
       return RedirectToAction("Create"); 
      } 


      return RedirectToAction("Index"); 
     } 

     return View(); 
    } 

答えて

1

私はHtml.BeginForm方法はCSHTMLに3つの引数が必要であることを発見しました。メソッドとコントローラを手動で指定する必要がありました。

@using (Html.BeginForm("Create", "UpdateLogs", FormMethod.Post, new { enctype = "multipart/form-data" }))