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

martes, 18 de abril de 2017

Videos - MVA Top 10 JavaScript Questions

Videos MVA Top 10 JavaScript Questions

1. MVA Top 10 JavaScript Questions - Introduction


2. MVA Top 10 JavaScript Questions - Question 1

How do I return the response from an asynchronous call?


3. MVA Top 10 JavaScript Questions - Question 2

What are JavaScript closures?


4. MVA Top 10 JavaScript Questions - Question 3

Why is it bad to use the for in statement to iterate through an array?


5. MVA Top 10 JavaScript Questions - Question 4

What is the difference between “==” and “===” ?


6. MVA Top 10 JavaScript Questions - Question 5

How to get a date as a software engineer?


7. MVA Top 10 JavaScript Questions - Question 6

How do I check if JavaScript objects are equal?


8. MVA Top 10 JavaScript Questions - Question 7

How do I sort an array?


9. MVA Top 10 JavaScript Questions - Question 8

What is the difference between let and var?


10. MVA Top 10 JavaScript Questions - Question 9

How do I change HTML elements in JavaScript?


11. MVA Top 10 JavaScript Questions - Question 10

How do I check if an array contains an object with a certain attribute value?




viernes, 31 de marzo de 2017

Nuevos Demos de WinForms

Nuevos Demos de WinForms - Crear Utilitarios de Windows en .NET

A partir de la próxima semana estaré publicando en este Blog una Serie de Demos llamada: "Crear Utilitarios de Windows en .NET" donde explicaré como crear los utilitarios mas populares de Windows en C#, entre ellos:

- El Bloc de Notas (Notepad)
- El Explorador de Windows (Explorer)
- El MS Paint
- La Calculadora (Calc)
- El Registro de Windows (RegEdit)
- Un Chat con Archivos Compartidos (en tiempo real)
- Un Explorador de SQL Server
- Un Generador de Código MVC, etc

Cada Utilitario vendrá con lo siguiente:
1. La explicación del código
2. El código para descargar
3. El Video (en Youtube) para ver paso a paso cómo fue construido (en menos de 30 minutos)

Los que desean cualquier otro Programa (Utilitario) popular pueden enviar sus sugerencias a: Luis.duenash@gmail.com

Esta publicación será una vez por semana, pero además volveremos a subir mas Libros, publicar mas Personajes importantes del mundo del desarrollo, etc.

Saludos a todos los visitantes.

martes, 2 de agosto de 2016

Videos - Carrito de Compras en ASP.NET MVC & JavaScript

Videos del Carrito de Compras en ASP.NET MVC & JavaScript

Quiero compartir con los que No asistieron a mi último taller y con los visitantes del Blog de otros países los videos de una aplicación completa en ASP.NET MVC & JavaScript que tiene un 20% de código en el servidor (C#) y un 80% de código en el cliente (JavaScript).

Partes de la Aplicación

La aplicación es un Carrito de Compras que trabaja con la BD Northwind a la cual se le aumento la tabla de Usuarios asociados a cada Cliente (para el Login y ordenar el Pedido).
Esta consta de 4 vistas o páginas:

- Login: Esta página permite el ingreso de un usuario y su clave, mas un código de Captcha.

- Categorias: Página que lista las Categorías de Productos.

- Productos: Página que lista los Productos de una cierta Categoría y permite agregar una cantidad al Carrito y también ir a ver.

- Pedidos: Página que permite mostrar los pedidos y cambiar su cantidad o eliminar un producto del pedido. También permite grabar el pedido al cliente.

Características Técnicas

Este Carrito de Compras tiene las siguientes características:

- Los controladores están protegidos por un Filtro de Autenticación usando una Sesión para el Cliente, es decir no se puede ir a ningún controlador o vista sino te autenticas (Login).

- Todas las llamadas al servidor son asíncronas con XHR (No jQuery, No Angular, etc)

- Todos los datos enviados al cliente se serializan a CSV (No XML ni JSON que son mas grandes por tener metadata).

- El Login usa un Captcha y cifrado en el cliente con WebCryptoAPI (No Librerías Externas JS)

- Todas las imágenes vienen en un solo viaje (No Sprite sino Serializado en Conjunto).

- Los datos del pedido se almacenan en el cliente con SessionStorage (No Session en el servidor).

- La grabación de la cabecera detalle es muy rápida ya que se pasa una cadena desde el cliente hasta el servidor web y de datos consumiendo una sola conexión y ejecutando un solo comando.

Videos del Carrito de Compras

Carrito de Compras Parte 1



Carrito de Compras Parte 2


Carrito de Compras Parte 3


Carrito de Compras Parte 4


Comentario Final

Este Carrito de Compras es totalmente distinto al que ven en la mayoría de sitios web que enseñan ASP.NET, ya que tiene muy poco código y trabaja casi desconectado donde toda la funcionalidad se construye con JavaScript y es 100% asíncrono con XHR.

No es un Carrito de Compras tradicional, es un "Formula 1" pura Performance usando JavaScript nativo que se ejecuta en cualquier Browser moderno.

Lástima que solo unos pocos pudieron apreciar esta interesante demostración de un nuevo tipo de aplicaciones. Para los que están en Lima y se atreven a pedir el código fuente, la respuesta es "hubieras participado en el taller" y para los del exterior pronto veremos la forma de que estos cursos se hagan virtuales (primero vería si tienen demanda, para lo cual están sus comentarios).

miércoles, 18 de mayo de 2016

Videos - El Reto o Desafío JavaScript

Videos - El Reto o Desafío JavaScript

Estimados visitantes del Blog, hace un buen tiempo que no escribo un post. Esta vez lo hago para informarles que he creado una Lista de Reproducción en mi Canal de YouTube llamado "Reto JavaScript" que consiste en crear código solo con JavaScript sin usar ningún Framework ni librería cliente, solo JavaScript puro (no jQuery, Angujar, Ember, etc).

Con esto quiero lograr 2 cosas:

1. Demostrar que todo lo que ven que hacen las librerías mas populares se puede conseguir con poco código y mejor (sobre todo si esta totalmente desconectado).

2. Fomentar la creatividad, la investigación, el talento y el esfuerzo de los desarrolladores para que estén preparados para crear cualquier tipo de requerimiento sin depender de terceros.

El tiempo propuesto para realizar cada reto es de una semana y la solución, es decir el código JavaScript será publicado en este medio.

RetoJS 00 - Presentación e Introducción al RetoJS

En este primer video hago una presentación personal de mi experiencia y los objetivos de querer fomentar la creatividad de los desarrolladores a través del Reto JavaScript, el cual consiste en el plazo de una semana crear una aplicación con un solo archivo JavaScript que realice la funcionalidad solicitada.

La idea es que se olviden poco a poco de los Frameworks y Librerías de JavaScript que son negativos para la Performance sobre todo si se abusa de ellos y que sean reemplazados por la lógica y la creatividad de tal forma que les permita programar en forma nativa cualquier cosa.


RetoJS 01 - Mover Columnas en una Tabla de Datos 

En este video se muestra el primer Reto JavaScript que consiste en realizar una aplicación que permita mover el orden de las columnas de una tabla en el lado del cliente, solo con JavaScript.

En el ejemplo se muestra la tabla de productos con 6 columnas, las cuales se pueden arrastrar en cualquier dirección, ya sea de izquierda a derecha o de derecha a izquierda, cambiando el orden de la presentación.


RetoJS 02 - Agrupar Celdas en una Tabla de Datos

En este video se muestra el segundo Reto JavaScript que consiste en realizar una aplicación que permita agrupar las celdas por una o varias columnas de una tabla en el lado del cliente, solo con JavaScript.

En el ejemplo se muestra la tabla de productos con 6 columnas, las cuales se pueden arrastrar a la parte superior que indica la agrupación, para lo cual primero se ordena y luego se combina las celdas. También hay un botón que permite eliminar la agrupación y regresar a la vista normal (no agrupada).


RetoJS 03 - Mover Columnas y Agrupar Celdas en una Tabla

En este video se muestra el tercer Reto JavaScript que consiste en realizar una aplicación que permita mover el orden de las columnas y agrupar celdas de una tabla en el lado del cliente, solo con JavaScript.

En el ejemplo se muestra la tabla de productos con 6 columnas, las cuales se pueden arrastrar en cualquier dirección, ya sea de izquierda a derecha o de derecha a izquierda, cambiando el orden de la presentación.

Además, debe poderse arrastrar las cabeceras a la parte superior que indica agrupación, para lo cual primero se ordena y luego se combina las celdas. También hay un botón que permite eliminar la agrupación y regresar a la vista normal (no agrupada).


Comentario Final

Estas tareas propuestas son comunes en el trabajo con datos en las aplicaciones web, es por eso, que en este último taller vamos a incluir todos los retos propuestos y lo haremos desde cero.

Que se diviertan, y demuestren todo su potencial.

miércoles, 10 de febrero de 2016

Videos Curso ASP.NET MVC & JavaScript HTE (Parte 2)

Videos del Curso ASP.NET MVC & JavaScript HTE (Parte 2)

Comparto la segunda parte del curso de ASP.NET MVC & JavaScript realizado en la Empresa HTE donde todo se trabaja en forma desconectada usando en el Servidor mi Serializador de Cadenas y JavaScript en el Cliente, sobre todo Matrices.

1. Curso MVC & JavaScript HTE - Demo 09

En este video se muestra como ordenar columnas en forma desconectada, tanto ascendente como descendente usando matrices en JavaScript.

Para el ejemplo se crean enlaces en la cabecera de la tabla, los cuales permiten ordenar sobre cada campo de la tabla productos, el primer clic ordena en forma ascendente y el segundo ordena en forma descendente mostrándose el símbolo respectivo.


2. Curso MVC & JavaScript HTE - Demo 10

En este video se muestra como paginar registros usando matrices en el cliente usando JavaScript. La paginación consta de enlaces (links) solo con los números de páginas, es decir, una paginación simple.

En este ejemplo se usan botones para los números de paginas, los cuales se ven en forma de círculo, con fondo y color debido al estilo, el cual cambia de apariencia al pasar el mouse (hover).


3. Curso MVC & JavaScript HTE - Demo 11

En este video se muestra como paginar registros usando matrices en el cliente usando JavaScript. La paginación consta de enlaces (links) con los números de páginas y también con 4 botones a los extremos (2 en cada lado) que permiten trabajar por bloques.

Este tipo de paginación es necesaria cuando se tiene muchas páginas y debemos agruparlas por bloques, para poder ver mejor y navegar rápidamente al inicio o al final.


4. Curso MVC & JavaScript HTE - Demo 12

En este video se muestra como hacer todas las operaciones en forma conjunta, es decir, paginar registros, ordenar columnas, filtrar registros y exportar registros a texto y excel todo en el cliente (desconectado) usando matrices en JavaScript.

El ejemplo es con la lista de productos y los datos están paginados y por bloques, también las columnas se pueden ordenar en forma ascendente y descendente, también se puede filtrar por cada campo escribiendo sobre los textos de las cabeceras en cada columna de la tabla y finalmente los datos filtrados se pueden exportar en un archivo de texto o en un archivo de excel.


5. Curso MVC & JavaScript HTE - Demo 13 (Parte 1)

En este video se muestra la primera parte de como realizar un mantenimiento de una tabla, es decir, las operaciones de adicionar, actualizar y eliminar registros.

En el ejemplo se muestra una lista de productos paginada por bloques, la cual se puede ordenar, filtrar, exportar a texto y excel. Si queremos crear un nuevo producto o editar uno existente se mostrará un popup (div dentro de la misma pagina).

Después de adicionar o actualizar un registro se actualiza la lista de productos y se cierra el popup. Finalmente, se puede eliminar desde la lista un registro previa confirmación.


6. Curso MVC & JavaScript HTE - Demo 13 (Parte 2)

En este video se muestra la segunda parte de como realizar un mantenimiento de una tabla, es decir, las operaciones de adicionar, actualizar y eliminar registros.

En el ejemplo se muestra una lista de productos paginada por bloques, la cual se puede ordenar, filtrar, exportar a texto y excel. Si queremos crear un nuevo producto o editar uno existente se mostrará un popup (div dentro de la misma pagina).

Después de adicionar o actualizar un registro se actualiza la lista de productos y se cierra el popup. Finalmente, se puede eliminar desde la lista un registro previa confirmación.


7. Curso MVC & JavaScript HTE - Demo 14 (Parte 1)

En este video se muestra la primera parte de cómo crear una cabecera detalle para una orden usando una sola página, ya que se usa solo 2 divs: uno para la parte principal y otro para las búsquedas.

Los datos de los clientes, empleados y productos para las búsquedas se cargan desde un inicio y se presentan en el mismo popup (div) usando la misma funcionalidad para los 3: filtro, ordenación y paginación, permitiendo seleccionar dando un clic.

También se realiza la validación de la cabecera y los detalles usando JavaScript y mostrando los resultados en un span como viñetas y filas de colores si no están completos los datos del detalle.

Finalmente, se graba la orden usando una cadena que viaja hasta el Procedimiento Almacenado de SQL Server usando un solo comando y una sola conexión. Además se puede imprimir la orden creada usando JavaScript para crear el HTML respectivo.


8. Curso MVC & JavaScript HTE - Demo 14 (Parte 2)

En este video se muestra la segunda parte de cómo crear una cabecera detalle para una orden usando una sola página, ya que se usa solo 2 divs: uno para la parte principal y otro para las búsquedas.

Los datos de los clientes, empleados y productos para las búsquedas se cargan desde un inicio y se presentan en el mismo popup (div) usando la misma funcionalidad para los 3: filtro, ordenación y paginación, permitiendo seleccionar dando un clic.

También se realiza la validación de la cabecera y los detalles usando JavaScript y mostrando los resultados en un span como viñetas y filas de colores si no están completos los datos del detalle.

Finalmente, se graba la orden usando una cadena que viaja hasta el Procedimiento Almacenado de SQL Server usando un solo comando y una sola conexión. Además se puede imprimir la orden creada usando JavaScript para crear el HTML respectivo.


9. Curso MVC & JavaScript HTE - Demo 14 (Parte 3)

En este video se muestra la tercera parte de cómo crear una cabecera detalle para una orden usando una sola página, ya que se usa solo 2 divs: uno para la parte principal y otro para las búsquedas.

Los datos de los clientes, empleados y productos para las búsquedas se cargan desde un inicio y se presentan en el mismo popup (div) usando la misma funcionalidad para los 3: filtro, ordenación y paginación, permitiendo seleccionar dando un clic.

También se realiza la validación de la cabecera y los detalles usando JavaScript y mostrando los resultados en un span como viñetas y filas de colores si no están completos los datos del detalle.

Finalmente, se graba la orden usando una cadena que viaja hasta el Procedimiento Almacenado de SQL Server usando un solo comando y una sola conexión. Además se puede imprimir la orden creada usando JavaScript para crear el HTML respectivo.


miércoles, 15 de julio de 2015

Videos - Curso ASP.NET MVC Editora Perú (Parte 2)

Videos del Curso de ASP.NET MVC en Editora Perú (Parte 2)

Segunda parte del curso de ASP.NET MVC con Demos muy buenos, por ejemplo varias formas de paginación: conectada, desconectada parcial y desconectada total, además de una aplicación que incluye un Login cifrado y una consulta y actualización de empleados, incluyendo su foto.

Demo 16 - Paginación Conectada Asincrona con XmlHttpRequest y String

En este video se muestra como paginar en forma conectada y asíncrona, es decir, se obtiene cada pagina desde la base de datos (con un procedimiento almacenado) y luego este es enviado como una cadena al cliente.

La llamada de este método se hace en JavaScript en forma asíncrona con XmlHttpRequest y se forma el HTML dinamicamente con los datos (string) devuelto por el servidor.

Esta técnica debe usarse cuando los datos a consultar deben hacerse en línea, ya que varian constantemente, por ejemplo, el stock de los productos.


Demo 17 - Paginación Desconectada Parcial Asincrona

En este video se muestra como paginar en forma desconectada parcial y asíncrona, es decir, una sola vez se hace el envio de datos desde el Servidor de Datos al Servidor Web y se guarda en un objeto TempData.

Se crea un método (acción) en el Controlador que permite Paginar, recuperando del TempData los datos y devolviendo los datos de una sola pagina en forma de cadena.

La llamada de este método se hace en JavaScript en forma asíncrona con XmlHttpRequest y se forma el HTML dinamicamente con los datos (string) devuelto por el servidor.

Esta técnica debe usarse cuando los datos a consultar no se necesitan en línea (desconectado) y son muchos registros (mas de 1000 por ejemplo).


Demo 18 - Paginación Desconectada Total Asincrona

En este video se muestra como paginar en forma desconectada total y asíncrona, es decir, una sola vez se hace el envio de datos desde el Servidor de Datos al Servidor Web y de éste al Cliente.

Se envian como cadenas los datos de los productos y en el cliente usando JavaScript se forma el HTML de la tabla y los índices de paginas y se asocia a una función de JavaScript que permite paginar.

Esta técnica debe usarse cuando los datos a consultar no se necesitan en línea (desconectado) y son pocos registros (menos de 1000 por ejemplo).

La gran ventaja de esta técinca es que si se cae el Servidor Web o el Servidor de Datos no afectaría a la pagina ya que funciona todo localmente.


Demo 19 - Login, Consulta y Actualización con Foto (Parte 1)

En esta primera parte, se muestra un video de como crear un Login usando un Filtro de Autenticación validando  mediante un objeto de Sesión.

El login corresponde al usuario asignado a un cliente y esta cifrado usando JavaScript mediante el algoritmo hash MD5 implementado en la librería creada por Google CryptoJS.


Demo 19 - Login, Consulta y Actualización con Foto (Parte 2)

En esta segunda parte se muestra como crear una Consulta de Empleados por código, la cual incluye los datos del Apellido, Nombre, Fecha de Nacimiento y la Foto del Empleado.


Demo 19 - Login, Consulta y Actualización con Foto (Parte 3)

En esta tercera parte del video se muestra como actualizar los datos del empleado (incluyendo la foto) en forma asíncrona usando XmlHttpRequest mediante el método "post" y un FormData.

Para grabar la foto se envía como cadena (base 64) pero sin cabecera, pero en el servidor se convierte a array de bytes y luego se pasa a la entidad de negocio y se envia a la regla de negocio que permite actualizar los datos del empleado, incluyendo la foto.


Lo destacado de todos los demos es que son asíncronos y consumen el menor ancho de banda, ya que uso mi propio serializador de cadenas y uso XHR (asíncrono nativo).

viernes, 12 de junio de 2015

Videos - IoTaConf Octubre 2014

Videos del IoTaConf Octubre 2014

El futuro de la computación es el Internet de las Cosas (IoT), y en este post les comparto los videos de uno de los eventos mas importantes a nivel mundial sobre este tema.

1. Olivier Bloch: Using Microsoft tools and platforms to build the IoT



2. Michael Koster, ARM: Design Patterns for an Internet of Things


3. Todd Montgomery, Kaazing: IoT Connectivity, Standards & Architecture


4. Wayne Piekarski, Google: Android Wear


5. Ravi Kurani, Sutro: 50 Billion Devices and the Next Billion Consumers


6. Bo Huang, SenseEarth: Real world maps in first person with Oculus Rift


7. Alex Lebrurn, Wit.AI: Speech Interfaces for the Internet of Things


8. Abhishek Sanwal: IOT Landscape, Evolution & Marturity Models. Rework the Internet


9. Andy Carle, Marvell: Mind the Gap. JavaScript for IoT, from Concept to Production


10. Kevin Hoyt, Kaazing: IoT and the New Web


11. Oliver Hutaff, Electric Imp: The True Value of the Internet of Things


12. Alfred Lui, Seer Labs: Re-orientating­ UX Design for the Internet of Things


13. Rikard Strid, Clayster: XMPP - Normalize Internet Of Things



lunes, 23 de marzo de 2015

El Demo del Día: Paginación y Ordenación Asíncrona en ASP.NET MVC con Ajax ActionLink y Vista Parcial

Paginación y Ordenación Asíncrona en ASP.NET MVC con Ajax ActionLink y Vista Parcial

Luego de casi un mes de no publicar un Demo, esta semana vamos a publicar uno diario para nivelarnos. En esta ocasión veremos como paginar y ordenar en forma asíncrona en ASP.NET MVC usando el control Helper Ajax.ActionLink y una Vista Parcial.

Requerimiento

Se desea crear una aplicación web en ASP.NET MVC que permita consultar la lista de empleados, dando la posibilidad de mostrar por páginas y ordenar los registros en forma ascendente y descendente por cada columna mostrada.
El requerimiento debe acompañarse de una buena experiencia de usuario que permita actualizar los datos al paginar u ordenar sin refrescar toda la pantalla.

Solución

Usaremos los controles Ajax.ActionLink tanto para la ordenación como la paginación, los cuales realizarán una llamada asíncrona (internamente usan jQuery Ajax) y actualizarán la vista mediante una vista parcial con los empleados.

Crear el Procedimiento Almacenado en la Base de Datos Northwind de SQL Server

Para listar los datos de los empleados crear el procedimiento "uspEmployeesListar":

Create procedure [dbo].[uspEmployeesListar]
As
Select EmployeeId,LastName,FirstName,IsNull(BirthDate,'1/1/1900') as Birthdate
From Employees

Crear una Librería de Entidades de Negocio para Northwind

Crear una librería de clases "Northwind.Librerias.EntidadesNegocio" con una clase llamada "beEmpleado" que tenga el siguiente código:

using System;
namespace Northwind.Librerias.EntidadesNegocio
{
    public class beEmpleado
    {
        public int IdEmpleado { get; set; }
        public string Apellido { get; set; }
        public string Nombre { get; set; }
        public DateTime FechaNacimiento { get; set; }
        public byte[] Foto { get; set; }
    }
}

Crear una Librería de Acceso a Datos para Northwind

Crear una librería de clases "Northwind.Librerias.AccesoDatos" con una clase llamada "daEmpleado" que tenga el siguiente código:

namespace Northwind.Librerias.AccesoDatos
{
    public class daEmpleado
    {
        public List<beEmpleado> Listar(SqlConnection con)
        {
            List<beEmpleado> lbeEmpleado = null;
            SqlCommand cmd = new SqlCommand("uspEmployeesListar", con);
            cmd.CommandType = CommandType.StoredProcedure;

            SqlDataReader drd = cmd.ExecuteReader(CommandBehavior.SingleResult);
           
            if (drd != null)
            {
                lbeEmpleado = new List<beEmpleado>();
                beEmpleado obeEmpleado;
                int posIdEmpleado = drd.GetOrdinal("EmployeeID");
                int posApellido = drd.GetOrdinal("LastName");
                int posNombre = drd.GetOrdinal("FirstName");
                int posFechaNacimiento = drd.GetOrdinal("BirthDate");
                while (drd.Read())
                {
                    obeEmpleado = new beEmpleado();
                    obeEmpleado.IdEmpleado = drd.GetInt32(posIdEmpleado);
                    obeEmpleado.Apellido = drd.GetString(posApellido);
                    obeEmpleado.Nombre = drd.GetString(posNombre);
                    obeEmpleado.FechaNacimiento = drd.GetDateTime(posFechaNacimiento);
                    lbeEmpleado.Add(obeEmpleado);
                }
                drd.Close();
            }
            return (lbeEmpleado);
        }
    }
}

Nota: Hay que referenciar a la librería de entidades de negocio anteriormente creada.

Crear una Librería de Reglas de Negocio para Northwind

Crear una librería de clases "Northwind.Librerias.AccesoDatos" con una clase llamada "daEmpleado" que tenga el siguiente código:

using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Configuration;
using Northwind.Librerias.EntidadesNegocio;
using Northwind.Librerias.AccesoDatos;

namespace Northwind.Librerias.ReglasNegocio
{
    public class brEmpleado
    {
        public List<beEmpleado> Listar()
        {
            List<beEmpleado> lbeEmpleado = null;
            string CadenaConexion = ConfigurationManager.
            ConnectionStrings["conNW"].ConnectionString;
            using (SqlConnection con = new SqlConnection(CadenaConexion))
            {
                try
                {
                    con.Open();
                    daEmpleado odaEmpleado = new daEmpleado();
                    lbeEmpleado = odaEmpleado.Listar(con);
                }
                catch (SqlException ex)
                {
                    foreach (SqlError err in ex.Errors)
                    {
                        //GrabarLog
                    }
                }
                catch (Exception ex)
                {
                    //GrabarLog
                }
            } //con.close(); con.Dispose();
            return (lbeEmpleado);
        }
    }
}

Nota: Hay que referenciar a las librería "System.Configuration", la librería de entidades de negocio y de acceso a datos.

Crear una Aplicación Web de ASP.NET MVC4 en C#

Abrir el Visual Studio 2012 y seleccionar un nuevo proyecto de tipo: "Aplicación web de ASP.NET MVC4".

Escribir como nombre "Demo09" y "Aceptar", en el siguiente diálogo seleccionar la opción "Vacio" y como motor de vista "Razor" y "Aceptar".

Antes de empezar a programar debemos referenciar las librerías anteriormente creadas, es decir, la librería de entidades del negocio, de acceso a datos y de reglas del negocio de Northwind.

Crear un Controlador para el Empleado

Clic derecho a la carpeta "Controllers" y seleccionar "Agregar" y luego "Controlador", llamarle al archivo "EmpleadoController.cs" y en opciones de plantillas dejarlo en plantilla vacia (Vaciar Controlador MVC). Luego escribir el siguiente código:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Northwind.Librerias.EntidadesNegocio;
using Northwind.Librerias.ReglasNegocio;

namespace Demo09.Controllers
{
    public class EmpleadoController : Controller
    {
        List<beEmpleado> lbePagina;
        List<beEmpleado> lbeEmpleado;
        int indicePaginaActual;
        int indiceUltimaPagina;
        int registrosPorPagina = 10;

        private void mostrarPagina()
        {            
            lbePagina = new List<beEmpleado>();
            int inicio = indicePaginaActual * registrosPorPagina;
            int fin = inicio + registrosPorPagina;
            for (int i = inicio; i < fin; i++)
            {
                if (i==lbeEmpleado.Count) break;
                lbePagina.Add(lbeEmpleado[i]);
            }
        }

        public ActionResult Lista()
        {
            brEmpleado obrEmpleado = new brEmpleado();
            lbeEmpleado = obrEmpleado.listar();
            Session["Empleados"] = lbeEmpleado;
            indiceUltimaPagina = (lbeEmpleado.Count / registrosPorPagina);
            if (lbeEmpleado.Count % registrosPorPagina == 0) indiceUltimaPagina--;
            ViewBag.IndiceUltimaPagina = indiceUltimaPagina;
            mostrarPagina();
            return View(lbePagina);
        }

        public PartialViewResult Ordenar(string campo)
        {
            ViewBag.Campo = campo;
            lbeEmpleado = (List<beEmpleado>)Session["Empleados"];
            int n = 0;
            string simbolo = "▲";
            if (TempData[campo] != null)
            {
                if (TempData[campo].Equals(0))
                {
                    n = 1;
                    simbolo = "▼";
                }
                else simbolo = "▲";
            }
            TempData[campo] = n;
            ViewBag.Simbolo = simbolo;
            if (n == 0) lbeEmpleado = lbeEmpleado.OrderBy
            (x => x.GetType().GetProperty(campo).GetValue(x, null)).ToList();
            else lbeEmpleado = lbeEmpleado.OrderByDescending
            (x => x.GetType().GetProperty(campo).GetValue(x, null)).ToList();
            Session["Empleados"] = lbeEmpleado;
            if (TempData["indicePaginaActual"] != null)
            {
                indicePaginaActual = (int)TempData["indicePaginaActual"];
                TempData["indicePaginaActual"] = indicePaginaActual;
            }
            mostrarPagina();
            return PartialView("Tabla", lbePagina);
        }

        public PartialViewResult Paginar(int pagina)
        {
            lbeEmpleado = (List<beEmpleado>)Session["Empleados"];
            indicePaginaActual = pagina;
            TempData["indicePaginaActual"] = indicePaginaActual;
            mostrarPagina();
            return PartialView("Tabla", lbePagina);
        }
    }
}

Nota: Inicialmente se llamará al método de acción "Lista" y luego los Ajax.ActionLink de ordenar llamarán a la acción "Ordenar" que devolverá una vista parcial llamada "Tabla" con los datos ordenados ascendente o descendente de acuerdo al valor del TempData de cada campo.
Si se da clic a los Ajax.ActionLink de paginación se llamará a la acción "Paginar" que configura el "indicePaginaActual" y muestra la vista parcial "Tabla" paginada.

Crear una Hoja de Estilos para la Vista Principal y la Vista Parcial

Primero crear una carpeta llamada "Content", luego clic derecho "Agregar" y luego "Hoja de estilos" y como nombre llamarle "ACME.css" y escribir el siguiente código:

body {
    background-color:gray;
}
.Titulo {
    background-color:black;
    color:white;
    font-size:larger;
}
.Subtitulo {
    background-color:white;
    color:black;
    font-size:large;
}
.AnchoTotal {
    width:100%;
}
.Centrado {
    text-align:center;
}
.FilaCabecera {
    background-color:lightgray;
    color:black;
}
.FilaDatos {
    background-color:white;
    color:black;
}

Crear el archivo JavaScript con el código cliente para la Vista Principal

Antes que nada crear una carpeta llamada "Scripts" y arrastrar del explorador de Windows los archivos de jQuery: "jquery-1.8.2.min.js" y "jquery.unobtrusive-ajax.min.js", luego agregar un archivo de JavaScript llamado "Rutinas.js" y escribir el siguiente código:

function mostrarSimbolo() {
    var campo = document.getElementById("hdfCampo").value;
    var simbolo = document.getElementById("hdfSimbolo").value;
    var span = document.getElementById("spn" + campo);
    span.innerHTML = simbolo;
}

Nota: Los dos campos ocultos serán creados en la vista parcial y se usan para actualizar el símbolo de ordenación en la vista principal.

Crear la Vista Principal

Ir al controlador "Empleado" y ubicarse sobre el método "Lista" (acción), clic derecho y seleccionar "Agregar vista", desmarcar todas las casillas (checkboxs) y agregar la vista llamada "Lista", luego escribir el siguiente código:

@using Northwind.Librerias.EntidadesNegocio
@model List<beEmpleado>
@{
    Layout = null;
    AjaxOptions configura = new AjaxOptions{ HttpMethod="get", InsertionMode=InsertionMode.Replace, UpdateTargetId="tbEmpleado", OnComplete="mostrarSimbolo"};
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Lista</title>
    <link href="~/Content/ACME.css" rel="stylesheet" />
</head>
<body>
    <div>
        <table class="AnchoTotal">
            <tr class="Titulo">
                <td>Demo 09: Grilla Paginada y Ordenada Asíncrona con 
                       Ajax ActionLink y Vista Parcial</td>
            </tr>
            <tr class="Subtitulo">
                <td>Consulta de Empleados</td>
            </tr>
            <tr>
                <td>
                    <table class="AnchoTotal">
                        <thead>
                            <tr class="FilaCabecera">
                                <td style="width:70px">
                                    @Ajax.ActionLink("Código","Ordenar",
                                     new {campo="IdEmpleado"},configura)
                                    @Html.Raw(" ")<span id="spnIdEmpleado"></span>
                                </td>
                                <td style="width:200px">
                                    @Ajax.ActionLink("Apellido","Ordenar",
                                     new {campo="Apellido"},configura)
                                    @Html.Raw(" ")<span id="spnApellido"></span>
                                </td>
                                <td style="width:200px">
                                    @Ajax.ActionLink("Nombre","Ordenar",
                                     new {campo="Nombre"},configura)
                                    @Html.Raw(" ")<span id="spnNombre"></span>
                                </td>
                                <td style="width:100px">
                                    @Ajax.ActionLink("Fecha Nac","Ordenar",
                                     new {campo="FechaNacimiento"},configura)
                                    @Html.Raw(" ")<span id="spnFechaNacimiento"></span>
                                </td>
                            </tr>
                        </thead>
                        <tbody id="tbEmpleado">
                            @Html.Partial("Tabla",Model)
                        </tbody>
                        <tfoot>
                            <tr class="FilaCabecera">
                                <td colspan="4" class="Centrado">
                                    @for (int i = 0; i <= ViewBag.IndiceUltimaPagina; i++)
                                    {
                                        @Ajax.ActionLink((i + 1).ToString(), "Paginar", 
                                         new { pagina=i}, configura)                                        
                                        @Html.Raw("  ")
                                    }
                                </td>
                            </tr>
                        </tfoot>
                    </table>
                </td>
            </tr>
        </table>
    </div>
    <script src="~/Scripts/jquery-1.8.2.min.js"></script>
    <script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
    <script src="~/Scripts/Rutinas.js"></script>
</body>
</html>

Crear la Vista Parcial

Ir al controlador "Empleado" y ubicarse sobre el método "Lista" (acción), clic derecho y seleccionar "Agregar vista", seleccionar la casilla (check) "Crear como vista parcial" y agregar la vista llamada "Tabla", luego escribir el siguiente código:

@using Northwind.Librerias.EntidadesNegocio
@model List<beEmpleado>
@foreach (beEmpleado obeEmpleado in Model)
{
    <tr class="FilaDatos">
        <td>@obeEmpleado.IdEmpleado</td>
        <td>@obeEmpleado.Apellido</td>
        <td>@obeEmpleado.Nombre</td>
        <td>@obeEmpleado.FechaNacimiento.ToShortDateString()</td>
    </tr>
}
<input id="hdfCampo" type="hidden" value="@ViewBag.Campo" />
<input id="hdfSimbolo" type="hidden" value="@ViewBag.Simbolo" />

Nota: Es necesario que los dos campos ocultos se encuentren dentro de la vista parcial para que se actualicen con el nombre del campo y el símbolo que se va a mostrar al hacer la ordenación asíncrona.

Modificar el archivo Web.Config para incluir la cadena de conexión

Ir al archivo Web.config ubicado en la raíz del proyecto e incluir lo siguiente:

<connectionStrings>
    <add name="conNW" providerName="SQLServer" connectionString=
"uid=UsuarioNW;pwd=123456;server=DSOFT\Sqlexpress;database=Northwind"/>
</connectionStrings>

Nota: Cambiar el nombre del servidor, el usuario y la clave de acuerdo a su configuración.

Configurar la Acción de Inicio

Para probar la aplicación web debemos configurar el inicio para lo cual nos vamos a la carpeta "App_Start" y abrimos el archivo "RouteConfig.cs" cambiando el nombre del controlador y la acción tal como se muestra en el siguiente código:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

namespace Demo09
{
    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Empleado", action = "Lista", id = UrlParameter.Optional }
            );
        }
    }
}

Ejecutar y Probar la Aplicación Web

Finalmente, grabar y pulsar F5 para ejecutar la aplicación, mostrándose el resultado similar a la siguiente figura:


Probar la ordenación ascendente y descendente por cada columna y se mostrará similar a la siguiente figura:


Finalmente, navegar por cada página y se verá los datos similar a la siguiente figura:


Comentario Final

En este post, hemos aprendido como paginar y ordenar en forma asíncrona usando los controles Helpers Ajax.ActionLink de ASP.NET MVC para mostrar los datos de los empleados.

Como siempre en este Blog no hemos necesitado de ningún control de terceros para realizar estas operaciones, sino que lo hemos hecho con los controles y librerías que vienen con el Framework de ASP.NET MVC.

Descarga del código

Video del Demo


Mañana publicaré otro Demo interesante de como hacer lo mismo pero totalmente desconectado, es decir sin ir al servidor web ni al servidor de datos.

Si les gusto compartanlo y denle like o +.

Videos - Curso de ASP.NET MVC Domingos (Parte 3)

Videos del Curso de ASP.NET MVC Domingos (Parte 3)

Comparto la tercera parte del Curso de ASP.NET MVC realizado los Domingos.

Curso de MVC Domingos - Demo 11 - Consulta Asíncrona en el Servidor con jQuery Ajax y JSON

En este video se muestra como realizar una consulta asíncrona de productos por categoría usando jQuery Ajax y devolviendo una lista de objetos como JSON para escribir el HTML en el cliente por Javascript.


Curso de MVC Domingos - Demo 12 - Consulta Asíncrona en el Servidor con XmlHttpRequest y Strings

En este video aprenderemos como realizar una consulta asíncrona de productos por categoría usando XmlHttpRequest (lo que usa internamente jQuery y Ajax) y devolviendo una cadena (String) para reducir el ancho de banda ya que es la octava parte de una vista parcial y la tercera parte de un JSON.


Curso de MVC Domingos - Demo 13 - Consulta Desconectada en el Cliente con jQuery Ajax y JSON

Este video muestra como realizar una consulta de productos por categoría totalmente desconectada del servidor web y de base de datos, recibiendo la primera vez todos los datos como JSON usando jQuery Ajax y filtrándolos en el cliente por JavaScript.


Curso de MVC Domingos - Demo 14 - Ordenación Desconectada en el Cliente con jQuery Ajax y JSON

En este video se muestra como ordenar los productos en el lado del cliente, totalmente desconectado del servidor web y de datos, para lo cual inicialmente hacemos una llamada asíncrona con jQuery Ajax y devolvemos un JSON con los productos los cuales se ordenan usando una función genérica de JavaScript.



jueves, 19 de marzo de 2015

Videos - Curso de ASP.NET MVC CIPSA (Parte 4)

Videos del Curso de ASP.NET MVC CIPSA (Parte 4)

Cuarta parte del curso dictado en CIPSA de Desarrollo de Aplicaciones Web con ASP.NET MVC. Esta vez los demos son sobre Gráficos Asíncronos en el Servidor con Vista Parcial y el Carrito de Compras en MVC.

Curso de MVC CIPSA - Demo 16 (Parte 1) - Gráfico Asíncrono en el Servidor con Vista Parcial

Este video es la primera parte de una aplicación que permite consultar los productos por categorías y mostrar gráficos de datos de diferentes tipos: Barras, Columnas, Lineas y Pie.
La consulta se realiza en forma asíncrona usando un Formulario Ajax y una vista parcial para mostrar solo la tabla y el gráfico sin actualizar toda la pantalla.


Curso de MVC CIPSA - Demo 16 (Parte 2) - Gráfico Asíncrono en el Servidor con Vista Parcial

Este video es la segunda parte de una aplicación que permite consultar los productos por categorías y mostrar gráficos de datos de diferentes tipos: Barras, Columnas, Lineas y Pie.
La consulta se realiza en forma asíncrona usando un Formulario Ajax y una vista parcial para mostrar solo la tabla y el gráfico sin actualizar toda la pantalla.


Curso de MVC CIPSA - Demo 17 (Parte 1) - Carrito de Compras

Este video es la primera parte de una aplicación que permite crear una orden o pedido de un conjunto de productos por Internet.
Incluye una pagina de login con Captcha y cifrado de clave mediante MD5 usando CrytpoJS, una pagina de selección de Categorías, una pagina de Productos por Categoría y finalmente la pagina del Pedido del Cliente.


Curso de MVC CIPSA - Demo 17 (Parte 2) - Carrito de Compras

Este video es la segunda parte de una aplicación que permite crear una orden o pedido de un conjunto de productos por Internet.
Incluye una pagina de login con Captcha y cifrado de clave mediante MD5 usando CrytpoJS, una pagina de selección de Categorías, una pagina de Productos por Categoría y finalmente la pagina del Pedido del Cliente.


Curso de MVC CIPSA - Demo 17 (Parte 3) - Carrito de Compras

Este video es la tercera parte de una aplicación que permite crear una orden o pedido de un conjunto de productos por Internet.
Incluye una pagina de login con Captcha y cifrado de clave mediante MD5 usando CrytpoJS, una pagina de selección de Categorías, una pagina de Productos por Categoría y finalmente la pagina del Pedido del Cliente.


Curso de MVC CIPSA - Demo 17 (Parte 4) - Carrito de Compras

Este video es la cuarta parte de una aplicación que permite crear una orden o pedido de un conjunto de productos por Internet.
Incluye una pagina de login con Captcha y cifrado de clave mediante MD5 usando CrytpoJS, una pagina de selección de Categorías, una pagina de Productos por Categoría y finalmente la pagina del Pedido del Cliente.


Curso de MVC CIPSA - Demo 17 (Parte 5) - Carrito de Compras

Este video es la quinta parte de una aplicación que permite crear una orden o pedido de un conjunto de productos por Internet.
Incluye una pagina de login con Captcha y cifrado de clave mediante MD5 usando CrytpoJS, una pagina de selección de Categorías, una pagina de Productos por Categoría y finalmente la pagina del Pedido del Cliente.


Curso de MVC CIPSA - Demo 17 (Parte 6) - Carrito de Compras

Este video es la sexta y última parte de una aplicación que permite crear una orden o pedido de un conjunto de productos por Internet.
Incluye una pagina de login con Captcha y cifrado de clave mediante MD5 usando CrytpoJS, una pagina de selección de Categorías, una pagina de Productos por Categoría y finalmente la pagina del Pedido del Cliente.


jueves, 12 de marzo de 2015

Videos - Curso de ASP.NET MVC Domingos (Parte 1)

Videos del Curso de ASP.NET MVC Domingos (Parte 1)

Comparto la primera parte del Curso de ASP.NET MVC realizado los Domingos.

Curso de MVC Domingos - Demo 01 - Acciones en un Controlador

Este video enseña como crear una simple aplicación web en ASP.NET MVC que tenga solo un controlador con varias acciones que devuelvan directamente datos de tipo cadena y fecha hora.
También se ve como configurar la acción y el controlador que inicia.


Curso de MVC Domingos - Demo 02 - Vistas y Navegación entre Acciones

En este video se muestra como crear vistas a partir de acciones y también como se navega entre vistas usando los Html Helpers ActionLinks.


Curso de MVC Domingos - Demo 03 - Formulario MVC y Controles Html Helpers

Este video muestra como enviar datos al servidor usando un formulario MVC y controles HTML Helpers para registrar los datos de un empleado.
Además muestra como cargar combos desde un archivo XML usando XmlTextReader y desde un archivo de Texto usando File.ReadAllLines.


Curso de MVC Domingos - Demo 04 (Parte 1) - Ordenar, Filtrar, Exportar a Texto y Excel

Este video muestra la primera parte de una aplicación web en ASP.NET MVC que lista los productos y permite ordenarlos por cualquier columna en forma ascendente y descendente.
Además permite filtrar los productos usando controles en las cabeceras, tanto textos como combos y muestra los datos encontrados de color rojo y en negrita usando un estilo.
Por último también permite exportar los datos buscados a un archivo de Texto y a Excel usando OLEDB y un archivo schema.ini para resolver los problemas de formato de columnas.


Curso de MVC Domingos - Demo 04 (Parte 2) - Ordenar, Filtrar, Exportar a Texto y Excel

Este video muestra la segunda parte de una aplicación web en ASP.NET MVC que lista los productos y permite ordenarlos por cualquier columna en forma ascendente y descendente.
Además permite filtrar los productos usando controles en las cabeceras, tanto textos como combos y muestra los datos encontrados de color rojo y en negrita usando un estilo.
Por último también permite exportar los datos buscados a un archivo de Texto y a Excel usando OLEDB y un archivo schema.ini para resolver los problemas de formato de columnas.


Curso de MVC Domingos - Demo 04 (Parte 3) - Ordenar, Filtrar, Exportar a Texto y Excel

Este video muestra la tercera parte de una aplicación web en ASP.NET MVC que lista los productos y permite ordenarlos por cualquier columna en forma ascendente y descendente.
Además permite filtrar los productos usando controles en las cabeceras, tanto textos como combos y muestra los datos encontrados de color rojo y en negrita usando un estilo.
Por último también permite exportar los datos buscados a un archivo de Texto y a Excel usando OLEDB y un archivo schema.ini para resolver los problemas de formato de columnas.


viernes, 6 de marzo de 2015

Videos - Curso de ASP.NET MVC CIPSA (Parte 3)

Videos del Curso de ASP.NET MVC CIPSA (Parte 3)

Tercera parte del curso dictado en CIPSA de Desarrollo de Aplicaciones Web con ASP.NET MVC. Esta vez los demos son sobre Programación Asíncrona con Ajax y jQuery.

Curso de MVC CIPSA - Demo 11 - Consulta Síncrona Con Vista Parcial

Este video muestra como filtrar desconectado en forma síncrona los productos por categoría, usando una Vista Parcial para reusar el HTML.
Las categorías se listan en un Combo y los productos en una tabla. Al hacer el filtro se pinta todo el HTML.


Curso de MVC CIPSA - Demo 12 - Consulta Asíncrona Con Formulario Ajax y Vista Parcial

Este video muestra como filtrar desconectado en forma asíncrona los productos por categoría, usando una Vista Parcial para reusar el HTML.
Las categorías se listan en un Combo y los productos en una tabla. Al hacer el filtro se hace una llamada asíncrona Ajax y se pinta solo el HTML de la vista parcial.


Curso de MVC CIPSA - Demo 13 - Consulta Asíncrona Con Formulario Ajax y JSON

Este video muestra como filtrar desconectado en forma asíncrona los productos por categoría, usando JSON y pintando en el cliente por JavaScript.
Las categorías se listan en un Combo y los productos en una tabla. Al hacer el filtro se hace una llamada asíncrona Ajax y se devuelve un arreglo de objetos en JavaScript (JSON), el cual se recibe y se pintan las filas dentro de la tabla en el cliente web.


Curso de MVC CIPSA - Demo 14 - Consulta Asíncrona con jQuery Ajax Form y JSON

Este video muestra como filtrar desconectado en forma asíncrona los productos por categoría, usando JSON y pintando en el cliente por JavaScript.
Las categorías se listan en un Combo y los productos en una tabla. Al hacer el filtro se hace una llamada asíncrona con jQuery Ajax y se devuelve un arreglo de objetos en JavaScript (JSON), el cual se recibe y se pintan las filas dentro de la tabla en el cliente web.


Curso de MVC CIPSA - Demo 15 - Consulta Asíncrona con Ajax ActionLink y Vista Parcial

Este video muestra como filtrar desconectado en forma asíncrona los productos por categoría, usando una Vista Parcial para reusar el HTML.
Las categorías se ven como links y al seleccionar una se muestra una vista parcial con los productos de esa categoría.


jueves, 5 de marzo de 2015

Videos - Curso de ASP.NET MVC CIPSA (Parte 2)

Videos del Curso de ASP.NET MVC CIPSA (Parte 2)

Segunda parte del curso dictado en CIPSA de Desarrollo de Aplicaciones Web con ASP.NET MVC.

Curso de MVC CIPSA - Demo 07 - Consulta Conectada de Empleado con Foto

En este video se aprenderá como hacer una consulta conectada o en línea para mostrar los datos del empleado incluyendo su foto desde base de datos.



Curso de MVC CIPSA - Demo 08 - Consulta Desconectada de Empleado con Foto

En este video se aprenderá como hacer una consulta desconectada almacenando en sesión los empleados y mostrando los datos de cada uno cuando se solicite.


Curso de MVC CIPSA - Demo 09 (Parte 1) - Grilla de Empleados con Filtros en la Cabecera

Este video es la primera parte de como crear una tabla con filtros en la cabecera que permita consultar los empleados en forma desconectada y mostrar los resultados con colores para las coincidencias de los datos buscados.


Curso de MVC CIPSA - Demo 09 (Parte 2) - Grilla de Empleados con Filtros en la Cabecera

Este video es la segunda parte de como crear una tabla con filtros en la cabecera que permita consultar los empleados en forma desconectada y mostrar los resultados con colores para las coincidencias de los datos buscados.


Curso de MVC CIPSA - Demo 10 (Parte 1) - Grilla de Productos con Combos en la Cabecera

Este video es la primera parte de como crear una tabla con filtros en la cabecera que contenga textos y combos para filtrar los productos y mostrar los resultados de color.


Curso de MVC CIPSA - Demo 10 (Parte 2) - Grilla de Productos con Combos en la Cabecera

Este video es la segunda parte de como crear una tabla con filtros en la cabecera que contenga textos y combos para filtrar los productos y mostrar los resultados de color.


No se olviden darle like y repostear.

Saludos.

miércoles, 4 de marzo de 2015

Videos - Curso de ASP.NET MVC CIPSA (Parte 1)

Videos del Curso de ASP.NET MVC CIPSA (Parte 1)

Esta semana he inaugurado mi canal de YouTube, donde encontrarán videos de desarrollo en .NET, HTML5, Móviles, etc.

Están invitados a suscribirse y darle Like a los que les guste, les dejo los enlaces de los videos que ya subí sobre un curso de capacitación en ASP.NET MVC a la Empresa CIPSA.

Nota: Por ahora, los videos No tienen audio ya que no uso micrófono y están grabados con Cantasia.

Curso de MVC CIPSA - Demo 01 - Controlador y Acciones

Este video muestra como crear una simple aplicación ASP.NET MVC usando Razor y C# que contenga solo un controlador y métodos de acción que devuelvan simples valores.


Curso de MVC CIPSA - Demo 02 (Parte 1) - Formulario MVC y Controles HTML Helpers

Este video muestra la primera parte de como crear un Formulario MVC usando los Controles HTML Helpers para registrar los datos de un empleado. También se muestra como cargar un archivo de texto y un archivo XML en un par de Combos.


Curso de MVC CIPSA - Demo 02 (Parte 2) - Formulario MVC y Controles HTML Helpers

Este video muestra la segunda parte de como crear un Formulario MVC usando los Controles HTML Helpers para registrar los datos de un empleado. También se muestra como cargar un archivo de texto y un archivo XML en un par de Combos.


Curso de MVC CIPSA - Demo 03 - Aplicación en Capas con Vista Con Tipo

Este video muestra como distribuir la lógica de la aplicación en varias capas, creando librerías de entidades del negocio, acceso a datos y reglas del negocio. Además se crea una vista con tipo (Modelo) para listar los empleados usando el control WebGrid.


Curso de MVC CIPSA - Demo 04 - Grilla de Empleados Paginada

Este video enseña como realizar paginación en una tabla de empleados (grilla) trabajando en forma desconectada. También se muestra como se guarda un valor entre request usando el TempData.


Curso de MVC CIPSA - Demo 05 - Grilla de Empleados Ordenada

Este video enseña como realizar ordenación en una tabla de empleados (grilla) trabajando en forma desconectada. También se muestra como se guarda un valor entre request usando el TempData.


Curso de MVC CIPSA - Demo 06 - Grilla de Empleados Paginada y Ordenada

Este video enseña como realizar paginación y ordenación a la vez, en una tabla de empleados (grilla) trabajando en forma desconectada. También se muestra como se guarda un valor entre request usando el TempData.


No se olviden de suscribirse y darle Like, para seguir subiendo diariamente mas videos.

PD: Los que desean pueden repostear los videos en sus blogs o en YouTube.