Mostrando entradas con la etiqueta MVC. Mostrar todas las entradas
Mostrando entradas con la etiqueta MVC. Mostrar todas las entradas

jueves, 6 de noviembre de 2014

Propiedades booleanas cómo texto en MVC Razor

 

Un pequeño truqillo muy molón para evitar renderizar en la vista los horribles valor booleanos 1/0.

Teniendo un Model con una propiedad booleana EstaActivo, lo declaro así en Razor

<td>@(Model.EstaActivo == 0 ? "Si": "No")</td>

Fíjate que estoy utilizando un operador ternario, pero podría utilizar esta estructura para hacer algo más complejo (aunque intento evitar toda lógica de representación en la Vista).

Pequeñito pero muy útil.

lunes, 14 de febrero de 2011

HTML.Helper y EF4.0. Evitar los campos nullables.

Estoy construyendo una pequeña aplicación CRUD para aprender y practicar MVC3 + Razor + Entity Framework 4.0. El objetivo es hacer un pequeño programa muy liviano para poder correr en un navegador de cualquier smartphone actual sin necesidad de tener que tener un programa cliente.

Empezando de la manera clásica, primero me he echo mi modelo de datos en sql y después he creado el modelo en EF 4.0. Coser y cantar. Sin los extraños problemas de la versión anterior.

Lo curioso es que algo que me he encontrado y que me sigo encontrando en los diferentes esquemas de datos, es la posibilidad de tener campos nullables en la sql. Y en el EF provocan cierta incomodidad al trabajar con ellos.

Por ejemplo, algo tan sencillo como declarar un helper para poder editar un número se complica si el campo que estamos trayendo es del tipo nullable (int?).

        <div class="editor-field">
@Html.EditorFor(model => model.numeroEntradas)
@Html.ValidationMessageFor(model => model.numeroEntradas)
</div>



Osea, un buen consejo para trabajar más cómodo: haz tus campos en la base de datos “no nullables” y ponle un valor por defecto. Te evitaras dolores de cabeza.

domingo, 23 de enero de 2011

ASP.NET Login. Relacionar datos con el User.Identity

Llevo con esto del ASP desde el año 1999, y con html desde el 97. Y, aunque parezca mentira, NUNCA he utilizado el sistema de logín que trae por defecto ASP.NET. Ahora, metido en aprender MVC3 con Razor me he dado cuenta de lo cómodo que es para proyectos pequeños (y no tan pequeños) y lo estoy empezando a usar.

La duda vino cuando doy de alta al usuario, pero no sé como relacionarlo con su ficha de usuario, que está en otra tabla. Dando vueltas por San Google llegue a donde una maestro que tenemos en España. En Galicia a más señas. A Jose M. Alarcón, el cual en este post me resolvió las dudas y me abrió el camino a una clase interesantísima: Membership.

Así mi paginita de Razor para hacer la prueba a ver qué me devuelve (nombre de usuario y su ID) quedó así:

@{
MembershipUser usuario = Membership.GetUser();
}
<p>
@{
if (User.Identity.IsAuthenticated)
{
@usuario.UserName;
@usuario.ProviderUserKey.ToString();
}
}
</p>

sábado, 15 de enero de 2011

ASP.NET MVC. Error en Helper DropdownList.

Que alguien me cuente porqué cada vez que cambio de lenguaje tengo que pasar por el terrible proceso de hacer un glosario de lo que quiere decir la descripción críptica de los errores:

The ViewData item that has the key  is of type 'System.Int32' but must be of type 'IEnumerable<SelectListItem>'

Manda cojones, esto quiere decir que en el controlador no he declarado un ViewData que devuelva un ListItem para rellenar el dropdown de la vista.

            <div class="editor-field">
@Html.DropDownListFor(model => model.idClub, ViewData["Clubs"] as SelectList)
</div>



public ActionResult Edit(int id)
{
Arqueros nuevoArquero = ArquerosModel.GetArquerobById(id);

if (nuevoArquero == null)
{ return View("NotFound"); }
else
{
//Este ViewData, si no lo pones, da el precioso error de arriba.
ViewData["Clubs"] = new SelectList(ClubsModel.GetListaClubs(), "idClub", "nombre");
return View(nuevoArquero);
}
}



Ale, supongo que de este tipo de entradas voy a ir metiendo unas cuantas.

viernes, 13 de agosto de 2010

ASP.NET MVC + JQuery

He empezado a empaparme del desarrollo con ASP.NET MVC, haciendo el tutorial básico de MSDN y escuchando una extensa presentación en ALT.NET.

Tiene buena pinta la cosa, y vamos a probar a qué sabe.