2017-02-02 3 views
0

Hallo allerseits Ich erstelle eine Anwendung mit asp.net mvc mit einer Codefirst-Datenbank, die es dem Benutzer ermöglicht, ein Bild mit etwas Text in der Datenbank zu speichern, aber ich möchte den Benutzer den Text senden können an sich ohne Bilder. Das Problem ist, dass wenn der Benutzer den Text ohne das Bild einreicht, stürzt er in dieser Zeile ab, wenn (file.ContentLength> 0) und gibt eine Null-Referenzausnahme. Danke für deine Hilfe.Image Upload stürzt ab, wenn Null

foreach (HttpPostedFileBase file in model.Files) 
      { 
       if (file.ContentLength > 0) 
       { 
        string fileName = file.FileName; 
        string Extension = Path.GetExtension(fileName); 
        string path = Path.Combine(Server.MapPath("~/Images/"), fileName); 
        file.SaveAs(path); 
        MyModel image = new MyModel() 
        { 
         Path = fileName, 
         FileName = fileName 
        }; 
        post.Images.Add(image); 
       } 
      } 

Ansicht

@Html.TextBoxFor(model => model.Files, new { type = "file", multiple = "multiple" }) 
+0

Es stürzt auf der 'foreach' Zeile ab, weil die' Files' Eigenschaft des Modells 'null' ist -' if (model.Files! = Null) {foreach (.... ' –

+0

try file.ContentLength! = Null && file.ContentLength> 0. keine Notwendigkeit für model.file checks, wenn es keine Dateien im Objekt gibt, die du nicht in die foreach-Schleife gehst – KevDevMan

+0

@KevDevMan, musst du nach 'null' suchen (du kannst nicht iterieren 'null') –

Antwort

0

Hallo @ARandomUserNamedChuck,

Ich habe keine feste Lösung, aber ich denke, eine Möglichkeit, dieses Problem zu beheben sollte dies theoretisch sein: Sie eine for-Schleife verwenden sollten und Konvertieren Sie sowohl den Text als auch die Bildfelder mithilfe von .length in eine Zeichenfolge. Danach rufen Sie das Feld auf, in dem der Upload stattfindet, und wenn das Feld leer ist, aber das Textfeld etwas enthält, setzen Sie den Vorgang fort. Hoffentlich hilft dieser Ansatz.

Verwandte Themen