viernes, 18 de mayo de 2012

Upload file MVC 3

Actualmente estoy trabajando en un proyecto de una aplicación MVC. En esta aplicación hay que crear usuarios donde podamos adjuntar una foto del usuario.

Cuando utilizamos MVC y queremos usar un input de tipo file, hay que cambiar alguna cosilla en el form del página, a continuación comentamos como habría que hacerlo.

Por defecto si en una vista usamos la siguiente declaración de tag form:

@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>


</fieldset>
}


Esto nos incluye en nuestro html el siguiente tag:



<form action="/Controller/Action" method="post">
<fieldset>
</fieldset>
</form>


Este tag form no contiene el atributo enctype, por lo que usara el enctype por defecto, es decir: “application/x-www-form-urlencoded”, pero este tag no nos sirve para hacer un post de un documento, por lo que tendremos que cambiar nuestra declaración del tag form, de manera que el enctype sea “multipart/form-data”, esto lo conseguimos de la siguiente forma:



@using (Html.BeginForm("Action", "Controller", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.ValidationSummary(true)
<fieldset>


</fieldset>
}


De esta forma ya obtenemos el tag form que necesitamos para poder subir un fichero:



<form action="/Controller/Action" enctype="multipart/form-data" method="post">
<fieldset>
</fieldset>
</form>


Una vez tenemos el form preparado, ya sólo necesitamos incluir un input de tipo file, por lo que nuestra vista podría quedar de la siguiente forma:



@using (Html.BeginForm("Action", "Controller", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Upload file</legend>
<div class="editor-label">
@Html.Label("Choose file")
</div>
<div class="editor-field">
<input type="file" name="file" id="file" />
</div>

</fieldset>
}


Por último nuestro controller quedaría de la siguiente forma:



public class ControllerController : Controller
{
[HttpPost]
public ActionResult Action(MyViewModel viewModel, HttpPostedFileBase file)
{
if (!ModelState.IsValid)
{

}
}
}

jueves, 17 de mayo de 2012

BDD Training

Quería compartir una presentación que he elaborado para un training interno de Spenta. En esta training se hablará sobre BDD y que herramientas tenemos en el mundo .NET para llevar a cabo una aplicación a partir del diseño dirigido por comportamientos.

Así que sin más dilación os dejo un enlace a la presentación.

http://prezi.com/zcuuubv7hifl/behavior-driven-development/

jueves, 22 de marzo de 2012

string.Format y uso de llaves para abrir cerrar función

Este es un post bien corto y seguro que muchos de vosotros ya lo conocéis, pero yo no me había encontrado con el caso hasta ahora…

La idea es que quería usar la función string.Format para que me escribiera en cliente una función de javascript y claro en esta función aparece el caracter ‘{‘ y ‘}’, pero no me interesa que string.Format, lo interprete como parámetro, por lo que necesito un carácter de escape. Bueno, pues el carácter de escape es usar este mismo carácter.

string.Format(@"
<script>
$(document).ready(function()
{{
$(""#{0}"").doSomething();
}});
</script>","HelloWorld");


Esta información la encontré en el siguiente blog:



http://geekswithblogs.net/jonasb/archive/2007/03/05/108023.aspx