Pasando la imagen al controlador ASP.NET MVC

Estoy tratando de enviar Image and ImageName de View a Controller.

Así es como se ve mi controlador:

[HttpPost] public ActionResult Add(BoxAddViewModel image) { //TODO: Add new box return RedirectToAction("Index"); } 

Este es el modelo:

  public class BoxAddViewModel : BaseViewModel { public int Id { get; set; } [Required] [DisplayName("Name")] public string Name { get; set; } [Required] [DisplayName("Source")] public HttpPostedFileBase Source { get; set; } } 

Y finalmente la vista:

 @using (Html.BeginForm("Add", "BoxManagement", new { @class = "form-horizontal", enctype = "multipart/form-data" })) { 
@Html.LabelFor(m => m.Name, new { @class = "col-sm-2 control-label" })
@Html.TextBoxFor(m => m.Name, new { @class = "form-control", @name = "Name"}) @Html.ValidationMessageFor(m => m.Name)
@Html.LabelFor(m => m.Source, new { @class = "col-sm-2 control-label" })
@Html.ValidationMessageFor(m => m.Source)
@Html.ActionLink("Cancel", "Index", null, new { @class = "btn btn-default" }) }

Entra en el método Add y el valor de la propiedad Name es correcto pero el origen es nulo.

¿Alguien sabe como resolver esto?

Estás usando la sobrecarga incorrecta de BeginForm() y agregando valores de ruta, no atributos html (siempre inspecciona el html que BeginForm() ). Utilizar

 @using (Html.BeginForm("Add", "BoxManagement", FormMethod.Post, new { @class = "form-horizontal", enctype = "multipart/form-data" })) 

Nota al new { @name = "Name"} de su método TextBoxFor() . Nunca intente anular el atributo de name generado por los métodos HtmlHelper menos que desee que el enlace falle (y en este caso no hace nada de todos modos)