ev vk
ev vk

Reputation: 355

upload image from view to controller mvc

Good day,

I am trying to upload an image from my view

@using (Html.BeginForm("CrearCurso", "ProfesorCurso", null, FormMethod.Post, new { enctype = "multipart/form-data" }))
{
   <div class="form-group">
    <label>Upload Image</label>
    <div class="input-group">
        <span class="input-group-btn">
            <span class="btn btn-default btn-file">
                Browse… <input type="file" id="imgInp">
            </span>
        </span>
        <input type="text" class="form-control" readonly>
    </div>
    <img id='img-upload'/>
</div>
}

I have this controller in mvc

  [HttpPost]
    public ActionResult CrearCurso(CursoViewModel CursoViewModel, HttpPostedFileBase imgInp)
    {

        return View();
    }

However when I inspect the HttpPsotedFileBase, it is empty. What is wrong here? thanks

Upvotes: 0

Views: 1066

Answers (1)

user3559349
user3559349

Reputation:

Forms posts back the name/value pairs of its successful form controls. Your file input has no name attribute. Change it to

<input type="file" name="imgInp">

However, its better to strongly bind to your model, so add a

public HttpPostedFileBase ImgInp { get; set; }

property to your view model and use

@Html.TextBoxFor(m => m.ImgInp, new { type = "file" })

which will also allow you to add validation attributes to your file input if required

Upvotes: 2

Related Questions