Los formularos son obligatorios si quieres una interaccion cliente-servidor. Más obligatorio se vuelve cuando quieres adjuntar un archivo. Para añadir el archivo, desde la vista, no supone ningun problema, ya que, lo unico que tienes que fijar es el input, pero no hay que olvidar que estamos en MVC y tenemos un backend para explotar todo lo que queramos.

En la vista no hay ninguna complicación, más alla del diseño, que con 4 lineas de código ya es funcional.

<form method="post" enctype="multipart/form-data">

Recordad que el formulario tiene que llevar enctype en multipart/form-data para poder enviar archivos a través del formulario.

El código básico es este:
Vista

Ya en la parte del controlador se va poniendo las cosas tensas, retornamos la vista, si es que la hemos creado, y añadimos el metodo Post.

Acto seguido le indicamos que debe recibir un objeto de tipo HttpPostedFileBase, le daremos el mismo nombre que en el formulario, preguntamos al objeto si es null y, en caso negativo, definimos la ruta absoluta de la carpeta en la que vamos a guardar nuestro achivo, con ayuda de Server.MapPath, que recoge una ruta relativa de la vista y la retorna en una absoluta para en controlador, a esa ruta debemos añadir algo para que el archivo tenga un nombre, cogemos el que ya tenia a la hora de enviarlo y así mantenemos la extensión.

Controlador

Para que esta aplicación se pueda utilizar en cualquier controlador, el resto de codigo, que en verdad es el que ejecuta el guardado del archivo, se almacena en un modelo, en el que a través de un void, al que le pasamos la ruta que hemos creado en el controlador y el propio fichero. Para comprobar si hay fallos englobamos el siguiente codigo en un try

file.SaveAs(ruta);

Nos quedará de está forma

Modelo

Hecho esto, nada mejor que devolver un mensaje de confirmación. A través de un String publico con métodos get y set. que enviaremos al controlador y del controlador a la vista con un ViewBag.

Descripción: Subir archivos al servidor desde mvc.

Autor/a: Sergio Reguera del Pino.

Curso: Microsoft MCSD Web Applications + SharePoint Apps.

Centro: Tajamar.

Año académico: 2016-2017.

Linkedin: https://es.linkedin.com/in/sergioreguera