2016-06-22 14 views
0

Wenn ich eine Datei aus dem Index hochlade, kann der Create Controller-Parameter null warum finden? ich db Modell verwende ist ‚Datei‘ und Modellklasse ist ‚MyfileModel‘MVC Controller-Parameter gefunden null

public ActionResult Create(HttpPostedFileBase filesBase) 
    {   
     try 
     { 
      if (ModelState.IsValid) 
      { 
       db.Files.Add(new File() 
       { 
        FileName = Path.GetFileName(filesBase.FileName) 
       }); 
       db.SaveChanges(); 
      } 
     } 
     catch (Exception) 
     { 
      var error = "Sorry not save"; 
     } 
     return Content(""); 
    } 



@using (Html.BeginForm("Create", "Home", FormMethod.Post, new {enctype = "multipart/form-data"})) 
{ 
<input type="file" name="file" id="file"/> 
<input type="submit" value="Upload"/> 
} 

Antwort

0

Ihre Eingabe muss dem Namen „Filebase“ haben. Oder ändern Sie den Namen des Eingabeparameters in Ihrer Aktion in "Datei".

+0

Danke Matko, es funktioniert. Wenn ich einen Dateinamen aus der Datenbank lese, wie kann ich das tun? –

+0

Müssen Sie Ihrer Datei aus der Datenbank den Namen zuweisen? –

+0

Ich denke, dass die Zuweisung von Formularfeldnamen nach etwas in der Datenbank gespeichert ist keine gute Praxis. Formularfelder sollten für die Eigenschaften Ihres Modells/Ansichtsmodells generiert werden. Sie haben CreateModel mit der Eigenschaft File, also sollte der Name des Feldes File sein. – xxxmatko

0

Sehen Sie, wie ich das gleiche zu erreichen, tue

Controller-Code:

[HttpPost] 
    public ActionResult File() 
    { 
     if (Request.Files.Count > 0) 
     {     
      var file = Request.Files[0]; 
      if (file != null && file.ContentLength > 0) 
      { 
       // do stuff 
      } 
     } 
     return View(); 
    } 

In View File:

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

    <div class="form-group"> 
     <input name="file" type="file" /> 
    </div> 
    <div class="form-group"> 
     <div class="col-md-offset-2 col-md-10"> 
      <input type="submit" value="Create" class="btn btn-default" /> 
     </div> 
    </div> 
} 
+0

Das Hinzufügen der 'HttpPostedFileBase' in der Aktion ist nicht obligatorisch. –

Verwandte Themen