Si trabajamos con ELMAH y realizamos nuestro propio control de errores será necesario notificarle que queremos que guarde esa excepción controlada. Lo haremos con:
ErrorSignal.FromCurrentContext().Raise(ex);
Si trabajamos con ELMAH y realizamos nuestro propio control de errores será necesario notificarle que queremos que guarde esa excepción controlada. Lo haremos con:
ErrorSignal.FromCurrentContext().Raise(ex);
Para crear un Tema o Theme en Visual Studio debemos hacer click derecho sobre el proyecto web y añadir la carpeta de ASP.NET App_Themes . Nos pedirá un nombre, le daremos el nombre MainTheme por ejemplo.
Una vez creado este directorio especial podemos añadirle dentro de sí un nuevo item de extensión .Skin.
Lo último que nos queda es especificar en el web.config la theme que usará el sitio por defecto.
<configuration> <system.web> <pages theme="MainTheme"> </pages> </system.web> </configuration>
Ya estará funcionando nuestro tema, solo quedaría definir en nuestro skin las propiedades de cada control.
Si con Bootstrap queremos utilizar un botón que tenga un icono de Glyphicon tenemos que olvidarnos del clásico asp:button y utilizar asp:linkbutton de la siguiente manera:
<asp:LinkButton runat="server" Text="<span class='glyphicon glyphicon-remove'></span>" CssClass="btn btn-default btn-xs" />
Lo que hacemos es darle una clase al linkbutton de Boostrap y dentro del text (innerhtml) la etiqueta span y su contenido.
No olvides que debes de tener los ficheros de css necesarios para que esto funcione, o sea bootstrap.css o bootstrap.min.css.
Para dar estilo básico a un control asp con boostrap:
<asp:DropDownList runat="server" ID="ddl" CssClass="form-control" >
Con la versión 4.5 de .NET Framework se ha incorporado la autenticación basada en Identity. Esto ya lo hablamos en pasadas entradas, ahora vamos a verlo un poquito más a fondo.
Con Identity se crean las siguientes tablas:
En estas tablas se guarda toda la información relacionada con los usuarios. Es en la tabla AspNetUsersr donde se guardan los siguientes campos:
En la siguiente imagen se muestra la estructura de tablas y los campos de la tabla AspNetUsers:
Ya entrando en el código, si has generado el proyecto web con una de las plantillas que ofrece Visual Studio 2013 verás que en la carpeta «Models» se ha creado un archivo llamado «IdentityModels.cs». En este fichero existen varias clases que definen la funcionalidad de Identity en la aplicación. Las clases son:
Después de analizar todo este rollo vamos a ver como podríamos obtener todos los usuarios con Identity. Si utilizamos directamente el contexto «ApplicationDbContext» accederemos a todos los usuarios mediante su propiedad «Users»:
IList<ApplicationUser> users = context.Users.ToList();
Unobstrusive validation (algo así como validación no obstrusiva) es una nueva característica introducida en ASP.NET 4.5. En un escenario normal cuando usamos un validador para validar cualquier control en el lado cliente se genera cierto código javascript automáticamente que se encarga de realizar esa funcionalidad.
Con la característica Unobstrusive Validation no se genera este código javascript pero para realizar la validación utiliza los atributos HTML5 data-*.
Cuando se crea un nuevo proyecto web con Visual Studio 2013 esta característica está por defecto habilitada.
Para manejar el valor en el que se establecerá esta característica podremos hacerlo de dos formas:
Habilitado:
<add key="ValidationSettings:UnobtrusiveValidationMode" value="WebForms"/>
Deshabilitado:
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None"/>
void Application_Start(object sender, EventArgs e) { //Habilitar característica Unobtrusive Validation ValidationSettings.UnobtrusiveValidationMode = UnobtrusiveValidationMode.WebForms; //Deshabilitar característica Unobtrusive Validation ValidationSettings.UnobtrusiveValidationMode = UnobtrusiveValidationMode.None; }
Si tienes un sitio web en Apache y necesitas redirigir a una dirección url distinta por cada idioma (inglés, español, portugués…) puede ser muy útil hacerlo mediante htaccess con la cabecera HTTP:Accept-Language que transmite el navegador del cliente. De este modo «confiaremos» en la configuración de lenguaje que cada usuario tiene en su navegador.
Así que nos ponemos manos a la obra:
Deberemos crear un directorio por cada uno de los idiomas.
Por ejemplo si nuestro dominio es midominio.com crearemos en la raíz tantas subcarpetas como idiomas queramos manejar:
midominio.com/pt
midominio.com/es
midominio.com/en
…
Añadiremos estas líneas:
RewriteEngine On RewriteBase / # Lenguaje portugués: 'pt' RewriteCond %{HTTP:Accept-Language} ^pt [NC] RewriteRule ^/?$ pt/ [R,NC,L] # Lenguaje portugués: 'es' RewriteCond %{HTTP:Accept-Language} ^es [NC] RewriteRule ^/?$ es/ [R,NC,L] #Regla general para los demás casos RewriteRule ^/?$ en/ [R,NC,L]
En el código podemos comprobar que se establecen diversas reglas de redireccionamiento para cada condición de la cabecera enviada por el navegador.
Desde que recuerdo en Visual Studio siempre ha habido dos maneras de crear webs llamadas:
En Visual Studio 2013 sigue existiendo está filosofía pero… ¿en qué se diferencian las aplicaciones web de los sitios web?
Existen ventajas y desventajas en cada una de las dos implementaciones.
En aplicaciones web:
En sitios web:
Resumiendo y desde mi punto de vista, los sitios web se utilizan para proyectos simples que no requieren de una gran infraestructura de código ni un gran número de dependencias. En cambio para proyectos de gran envergadura y que necesiten cierta arquitectura (3 capas por ejemplo) es mejor utilizar una implementación de proyecto Web.
Bundling es una nueva característica dentro de ASP.NET 4.5 que hace fácil combinar diversos ficheros en un único fichero. Esto es muy recomendable porque acelera sustancialmente la carga de la página y con ello mejora el rendimiento de la aplicación.
No hay que confundir bundling con minification, pero… ¿qué signfica Minification? Seguro que os habéis preguntado en alguna ocasión por qué en muchos ficheros que os descargáis por la red existen dos ficheros uno con extensión min.css o min.js y otro sin él. El fichero min es básicamente el mismo pero en él se eliminan los espacios en blanco no significativos, comentarios y se acortan los nombres de las variables. El objetivo final de esto es acortar el tiempo de carga de estos ficheros.
Los ficheros donde se utilizan estas técnicas son archivos javascript y css.
Bundling y minification se habilitan o deshabilitan en base al valor de la propiedad debug dentro del elemento compilation del web.config.
Si debug=»true» entonces el agrupamiento y la minificación estarán deshabilitadas. Es lógico, si queremos depurar la aplicación y queremos que el código sea legible necesitaremos distintos archivos y líneas de código, no un «tocho» de código dentro de una misma línea.
Si debug=»false» entonces se habilitarán estas dos características.
En un proyecto web creado con plantilla con Visual Studio podremos observar que existe un fichero llamado startup.cs gestionado por OWIN que se ejecuta al iniciar la aplicación.En este fichero se llama a un fichero de configuración de bundling llamado BundleConfig.cs (dentro del directorio App_Start) que se encarga de asignar los Bundling y Minification.
En Visual Studio 2013 han introducido una manera sencilla para establecer el tipo de autenticación que usará la aplicación web.
Estos son los métodos de autenticación en Visual Studio 2013
Como podemos comprobar la autenticación de aplicaciones de Visual Studio 2013 ha cambiado notablemente, este aspecto está influido por la nueva filosofía que ha tomado Microsoft para su integración de aplicaciones web en un entorno más actual y no completamente atado a tecnologías propias de Microsoft.