2017-07-25 7 views
0

Ich sah viele Fragen wie diese und suchte in allen anderen Fällen auf StackOverflow nach einer Antwort, warum dies der Fall ist und keiner von ihnen angewendet. Alles, was ich sehen kann, ist soweit korrekt. Mein Name für das Dateieingabetag entspricht genau dem Variablennamen der create-Methode im Controller. Ich habe sogar den enctype zum Formular hinzugefügt. Siehe unten:HttpPostedFileBase ist Null jedes Mal

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

Controller:

[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(); 
    } 

Antwort

1

ich entdeckt, dass die Html.BeginForm Methode 3 Argumente in der cshtml erfordert. Ich musste die Methode und den Controller manuell angeben.

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