Home > DeveloperSection > Forums > mvc upload file with model - second parameter posted file is null
Pravesh Singh
Pravesh Singh

Total Post:101

Points:709
Posted on    December-09-2014 11:44 PM

 ASP.Net C#  Mvc4  Model 
Ratings:


 1 Reply(s)
 1184  View(s)
Rate this:

I have a simple model with 1 string property which I render on a simple view.

 

the view looks like the following:

 

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

{

    @Html.TextBoxFor(m => m.FirstName)

    <br /><br />

 

    <input type="file" name="fileUpload" /><br /><br />

    <input type="submit" value="submit me" name="submitme" id="submitme" />

}

Controller is this:

 

[HttpPost]

public ActionResult UploadFile(UploadFileModel model, HttpPostedFileBase file)

{

   // DO Stuff

   return View(model);

}

Now, when I submit, the model DOES get populated but the second parameter being HttpPostedFileBase is null. However when doing Request.Files - it does seem to show there is a file in the Request being posted. How can I actually get the second parameter to bind?



jayprakash sharma
jayprakash sharma

Total Post:117

Points:821
Posted on    December-10-2014 5:44 AM

Why not add the uploaded files to your model like this:

 

public class UploadFileModel

{

    public UploadFileModel()

    {

        Files = new List<HttpPostedFileBase>();

    }

 

    public List<HttpPostedFileBase> Files { get; set; }

    public string FirstName { get; set; }

    // Rest of model details

}

Then change your view to this:

 

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

{

    @Html.TextBoxFor(m => m.FirstName)

    <br /><br />

 

    @Html.TextBoxFor(m => m.Files.Files, new { type = "file", name = "Files" })<br /><br />

    <input type="submit" value="submit me" name="submitme" id="submitme" />

}

Then your files will be posted back as follows:

 

public ActionResult UploadFile(UploadFileModel model)

{

    var file = model.Files[0];

    return View(model);

}


Don't want to miss updates? Please click the below button!

Follow MindStick