Nuestra propuesta para Codecamp 2011 (Salta.NET)

by Guillermo Diéguez 6. September 2011 17:05

Buenas! Despues del blog que publicamos en la entrada anterior, Patricio y yo continuamos con “Metrohub”, nuestra propuesta para Codecamp 2011. Ciertamente nos llevo muchisimo trabajo, en especial a Patricio, quien se superó al lograr semejante objetivo en un plazo de 4 meses, del cual 1 estuvo en la etapa de diseño. Terminada la web, oimos recomendaciones de que quiza sería mejor orientar mas nuestro proyecto hacia ImagineCup, (Preguntar por Miguel Saez) por lo que comenzamos a pensar algunas alternativas y nuevas funciones para la web que atraigan a jóvenes hacia el estudio. Ya que esto es lo que nos gusta hacer, preguntamos y pensamos cuáles mejoras se podrian llevar a cabo. (Juegos en HTML5, por ejemplo Guiño). Un reproductor de música online, con características de Zune, tampoco se hizo esperar, y es por eso, que ya tenemos la web casi definida.

Actualmente está en funcionamiento, pero temporalmente alojada en un servidor que nos recomendaron (También preguntar por Saez). Para experimentar nuestro sitio, pueden visitar el siguiente link: (tengan en cuenta que no guardamos ninguna informacion personal, y que los perfiles que registren en el periodo de prueba podrian ser eliminados en el lanzamiento de la aplicación final) ESTO ES UNA PRE-ALPHA!

 

http://webmatrix264.nxnethosting.com.cloudwindows.nxnethosting.com

Y NO salteen la presentación! Está totalmente escrita en HTML5 Risa

Bueno, para el que quiera ver un poco de diseño, mi parte favorita, tengo una maqueta en el siguiente link:

 

http://www.mediafire.com/?9mbba2bfj6tywdi

 

Si ademas quieren ver los diseños que realice hasta llegar al septimo y final, se encuentran en esta URL:

 

http://www.mediafire.com/?k4asyziyg4g82ga

 

Listo, ah capturas, capturas! casi me olvido. Aqui algunas capturas:

 

1

2

3

 

Saludos, y mucha suerte!

Tags:

ASPX | Blog | Células | CodeCamp | HTML5 | ImagineCup | web | Windows Azure

Avances de nuestra célula (Salta.NET)

by Guillermo Diéguez 6. September 2011 16:17

Hola de nuevo! Esta vez, despues de mucho tiempo de inactividad, trabajando en el proyecto y estudiando, nos pusieron un reto: desarrollar una aplicacion web, paralelamente a nuestro proyecto. Como recien empezabamos, tenia que ser algo sencillo. Es por eso que creamos un pequeño blog. El blog se llama SaltaBlog, y contiene las funciones basicas de un blog normal y sencillo.

Aqui algunas capturas del trabajo final: (blog en proceso)

JPG 1.0

Y aqui esta el blog finalmente diseñado: (trabajo final)

JPEG 2.0

Lo subimos a Azure! Lamentablemente, el periodo de prueba de Azure expiro Triste, por lo que unicamente podemos mostrarles la maqueta de nuestro blog (descarga por MEDIAFIRE)

http://www.mediafire.com/?d3l8etgin4lovb2

Con este mini-proyecto no tuvimos que cambiar de diseño. Simplemente decidimos que este era el indicado y  empezamos a desarrollar.

 

Muchas gracias por pasar!

Tags:

ASPX | Blog | Células | CodeCamp | Comienzos | ImagineCup | Visual Studio | web | webmatrix | Windows Azure

Presentación de la célula AbsolutX

by AbsolutX 16. July 2011 18:11

Hola Mundo!

Nos queremos presentar, somos la célula AbsolutX.


Somos un grupo de cuatro jóvenes universitarios con una gran iniciativa y ganas de participar del CodeCamp 2011 con un proyecto original, novedoso y que nos mantendrá ocupados durante los próximos meses.


También contamos con el apoyo de un tutor con más experiencia en la materia para realizar constante feedback con el fin de mantener un desarrollo parejo.

En la brevedad, nos estaremos reuniendo nuevamente para subir el progreso realizado y compartir nuestras experiencias.

 

David Frassoni

Estudiante de Licenciatura en Análisis de Sistemas en la Universidad de Buenos Aires. En su tiempo libre le gusta salir a correr y mejorar sus habilidades de bajista. Anteriormente participó en el Proyecto Hoshimi organizado por Microsoft y la Universidad de Palermo.

Brian Kanelson

Estudiante de Ingeniería en Informática en UADE. En su tiempo libre le gusta ver series de TV. Su objetivo para este evento es incorporar nuevos  conocimientos, investigando nuevas tecnologías de Microsoft.


Brian Litwak

Estudiante de Licenciatura en Ciencias de la Computación en Universidad de Buenos Aires, Facultad de Ciencias Exactas. En su tiempo libre le gusta   salir a correr y leer. Esta es su segunda vez que participa.

Lucas Moscovicz

Estudiante de Ingeniería en Informática en ITBA. En su tiempo libre le gusta tocar y componer música. Su objetivo para este evento es aprender más sobre la dinámica de un proyecto, así como adquirir más conocimientos en las nuevas tecnologías de Microsoft.

 

La iniciativa de participar en la Demo Fest 2011 surgió luego de una salida en la que charlamos de diferentes experiencias participando en los eventos de Microsoft.

Desde ese día nos pusimos a investigar y pensar en diferentes ideas para el proyecto.


Haciendo un Brainstorm llegamos a la conclusión de que Windows Phone 7 es una de las tecnologías más novedosas que nos enriquecerá con nuevos conocimientos y nos será útil personal y profesionalmente.


La idea principal del proyecto es realizar una aplicación para Windows Phone 7 que permita controlar remotamente el Reproductor de Windows Media Player de la PC a través de Internet desde cualquier punto. 


Nuestro objetivo con todo esto es aprender más sobre las nuevas tecnologías de Microsoft como por ejemplo:

- C#

- Windows Azure

- Windows Phone 7

- Windows Communication Foundation

Entre otras...


Asi que... Manos a la obra!

Tags: , ,

Blog | Células | CodeCamp | Comienzos | dotNET | Visual Studio | web | Windows Azure | Windows Phone 7 | WCF | IIS

Inicio de Sesión con otra Aplicación

by Moisés Rivas 25. May 2011 07:14

Hola gente, hoy quería hablar sobre un tema que busque mucho en internet y no encontré, se trata de iniciar sesión desde mi aplicación pero con otra aplicación, imaginen esto, una empresa tiene una aplicación web que se loguean todos los empleados, pero al empezar a crecer esta empresa, empieza a tener otras aplicaciones donde trabajan los mismos empleados, son distintas funcionalidades para las cuales se emplean estas aplicaciones, donde son los mismos empleados y es como engorroso tener que hacer un administrador de usuarios para cada app, cuando solo necesitas saber si es de la empresa y darle permisos,  bueno el requerimiento es el siguiente:
Hacer una aplicación de inicio de sesión único para todas las aplicaciones que estén o que se realicen a futuro.

Para este ejemplo vamos a realizar lo siguiente, tendremos 3 aplicaciones.

Donde App1 es la de logueo y las otras dos App2 y App3 son aplicaciones simples

1. En nuestra App1 en la página de loguin en el botón de inicio le creamos un método para cuando haga clic o en su defecto si es MVC en el Controlador que inicia sesión.

protected void LoginButton_Click(object sender, EventArgs e)
{
if (Membership.ValidateUser(LoginUser.UserName, LoginUser.Password))
{
FormsAuthentication.SetAuthCookie(LoginUser.UserName, true);
FormsAuthentication.RedirectToLoginPage();
}
}

2. En el web.config de la App1 agregamos el name a la validación, de la siguinte forma

<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" name="appDeLogueo" timeout="2880" />
</authentication>

en esta parte es importante remarcar que se le agrego el tag name.

3. Ahora nos vamos a nuestras App2 y App3 que aquí he elegido usar MVC 2 y MVC 3, nos vamos al web.config y ponemos lo siguiente

<authentication mode="Forms">
<forms loginUrl="http://localhost:8568/Account/Login.aspx"
name="appDeLogueo"
timeout="2880" />
</authentication>
<authorization>
<deny users="?"/>
</authorization>

4. Ahora nos vamos al archivo global.asax y agregamos el siguiente metodo

protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
var cookieName = FormsAuthentication.FormsCookieName;
var authCookie = Context.Request.Cookies[cookieName];
if (null == authCookie)
{
Response.Redirect("http://localhost:8568/Account/Login.aspx?ReturnUrl=" + Request.Url.AbsoluteUri);
}
}

Si miran bien van a notar que he puesto un Redirect forzado donde más allá que lo indique en el web.config la directiva de logueo, acá lo que hago es agregarle el QueryString de ReturnUrl pero con el path completo, porque sino lo que sucede es que re direcciona pero el solamente al hash y al retornar termina buscando el retorno a ese hash dentro de su propio dominio.

Bien ahora ya podemos ejecutar nuestras aplicaciones y veremos que nos re direcciona a la pagina de loguin y una vez que hacemos loguin nos comparte las credenciales para luego volver a la pagina que pidio el inicio de sesión sin importar el dominio.

image

Un dato interesante es si tildamos el check de recordar usuario cuando iniciamos sesión después abrimos las otras web y estas directamente ya no van a la pagina de inicio  solamente saben que ya alguien se logueo y buscar los datos a partir de la cokie que pasamos en el web.config entonces trae las credenciales sin intervención de nada más.

Bueno de ante mano pido disculpas si he indicado algo erróneo, la verdad que no soy un experto en seguridad de aplicaciones, pero me pareció interesante demostrar como podemos hacer una simple aplicación de inicio de sesión para que otras web solo utilicen el logueo contra esta y así tener las mínimas credenciales, la verdad que esto nos llevo un buen rato descubrir como hacerlo con mi compañero Aldo pero al fin dimos con la tecla.
Hay mucho más como STS para realizar cosas más sofisticadas como autenticar contra distintos sistemas como Google, Windows Live ID, Servicios Azure etc,, para ver ejemplos en video pueden visitar el canal de Youtube de la Comunidad de Technet y MSDN de Microsoft http://www.youtube.com/user/technetymsdn, ahí tambien van a encontrar un montón de videos de los eventos que realiza Microsoft como el Run Web Camp que se realizo en Buenos Aires.

Desde ya gracias por pasar por aquí y cualquier duda me mandan un menaje a mi mail que es moises.rivas@msptechrep.com chau y nos vemos en la próxima.

Tags:

web | Visual Studio | ASPX

8 - MVC 3 con Razor ~ Trabajando con Scaffolding y EF Code First SQL Compact.

by Moisés Rivas 11. April 2011 22:19

Hola gente hoy les voy a mostrar en un video muy corto de como hacer una página WEB en pocos minutos, para esto sólo creamos una especificación de la base de datos en nuestra carpeta Models en una clase, y después vamos a descargar desde www.nuget.org e instalar con la herramienta Package Manager Console de VS 2010 dos paquetes de librerías Scaffolding y EFCodeFirst.SQLCompact, me pareció interesante mostrar estas librerías porque nos hace la vida mucho más fácil a la hora de hacer una web. Para ver el video en una mejor calidad tienen que hacer clic en HD.

Bueno, espero que les sea de ayuda y por favor no duden en consultar a mi correo moises.rivas@msptechrep.com. Saludos y espero sus comentarios.

Tags:

MVC | Visual Studio | web

7 - MVC 3 con Razor ~ Agregando Facebook y Twitter a mi aplicación

by Moisés Rivas 27. February 2011 20:49

Buenas amigos hoy vamos a hablar de como agregar funcionalidad a nuestra aplicación WEB con Facebook, Twitter y otras más, para hacer esto tendremos que abrir nuestro administrador de paquetes (Nuget), agregar una librería y después a utilizarla, pero bueno vamos a empezar.

Primero tomamos nuestro proyecto con el que venimos trabajando del POST anterior y abrimos nuestro administrador de paquetes para agregar una nueva librería, para esto hacemos botón derecho sobre nuestro Proyecto y clic en “Add Library Package Reference”.image


Se abre una ventana y seleccionamos Online, buscamos la librería “microsoft-web-helpers”.

image
Una vez encontrada nuestra librería le damos clic en Install, si observan nuevamente verán que ya esta instalada en el proyecto.
image
También para hacerlo mucho más fácil pueden abrir directamente la consola de administración haciendo clic en Herramientas->Library Package Manager->Package Manager Console y escriben “Install-Package microsoft-web-helpers” le dan enter.
image
Bueno si pueden notar verán que tenemos una nueva carpeta que se llama App_Code y otra que se llama Facebook, adentro están las implementaciones que tienen por defecto cada una de las librerias, pero si ejecutan el proyecto les va a tirar un error.
image

Sucede que la librería micrsosoft-web-helpers v1.1 que bajamos trabaja con paginas Web simples realizadas con WebMatrix, así que lo que tendremos que hacer es copiar en la carpeta Bin los archivos WeMatrix.Data.dll y WebMatrix.WebData.dll que se encuentran en la dirección %ProgramFiles%\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\Assemblies.
image

Ahora ejecutamos y ya esta de nuevo en funcionamiento. image 
Ahora vamos a ir a nuestro template y ponemos el siguiente código.

@Twitter.Search("MVC 3 con Razor",280,250,"Titulo Twitter","Esta es la caption","#3E3B36","#999999")


Con esta simple línea estamos poniendo un marco de búsqueda de comentarios en línea de Twitter que son referentes a nuestra web, noticia, etc, a todo lo que quieran poner.
image
Ahora agregamos la siguiente línea.

@Facebook.LikeButton(“mardemza.wordpress.com”)    


Esta otra línea agrega el botón de “Me Gusta” de Facebook. Pueden agregar más funcionalidad viendo las referencias que están dentro de la carpeta Facebook del mismo proyecto.
image

 

Bien ahora vamos agregar una vista, donde seguido agregamos estas líneas de abajo.

<h3>Gravatar</h3>
@Gravatar.GetHtml("moises.rivas@msptechrep.com") <br />

<h3>XBox Live GameCard</h3>
@GamerCard.GetHtml("mardemza") <br />

<h3>Microsoft Bing</h3>
@Bing.SearchBox()

<h3>Twitter Button</h3>
@TwitterGoodies.TweetButton( TwitterGoodies.DataCount.Horizontal,
"Titulo","http://mardemza.wordpress.com", TwitterGoodies.Languages.Spanish) <br /> <h3>Facebook Recomendaciones</h3> @Facebook.Recommendations("http://cells.puertadeenlace.net/")


Si ejecutan verán que hemos agregado Gravatar de un mail que le pasamos, un perfil de XBox que trae datos públicos de algún perfil que le indiquemos, un buscador de Bing, un boton de Re-Twittear y recomendaciones de Facebook.
image

image


Los invito a que sigan investigando  y a que se instalen otras librerías desde el administrador, como ven es muy facil de utilizar y le agrega a nuestra Web muy buena funcionalidad relacionada con las redes sociales y otras más.

Aquí abajo les dejo el link para que descarguen el proyecto de este POST.
MVC 3 con Razor – 7º POST

     Bueno hasta aquí llegamos hoy, espero que les alla gustado.
En resumen hoy hemos aprendido a:

Abrir el Library Package Manager.
Instalar una librería.
Utilizar la librería con sus funcionalidades. 

Recomendaciones:
Nuget
Facebook Helper
Kodu incluido en Dreamspark.
Ebook gratuito–Nuevo / desarrollo de Windows Phone 7

Espero sigan investigando y nos vemos para el próximo POST

Para cualquier consulta pueden dejar sus mensajes aquí o mandar me un correo electrónico a moises.rivas@msptechrep.com.

Tags:

MVC | web

6 - MVC 3 con Razor ~ Usando JQuery y Unobtrusive AJAX

by Moisés Rivas 23. February 2011 21:07

Buenas, hoy voy a empezar con la parte de JQuery, Unobtrusive AJAX, para ello vamos a realizar un método en el controlador que nos devuelva un string, después vamos a implementar dos opciones para utilizar este controlador desde el cliente, bueno listo de  introducción y vamos a empezar.

Continuando con el trabajo anterior (abajo les dejo el link de los archivos zip de los proyectos de todos los POST anteriores) vamos a abrir nuestro controlador de la Home ósea el archivo HomeController.cs que se encuentra en la carpeta Controllers y agregamos este código.

public string CalcEdad(string fechaNacimiento)
{
     // Inicializo las variables
     DateTime actual = DateTime.Now;
     DateTime fecha = Convert.ToDateTime(fechaNacimiento);
     int edad = 0;

     // Consulto si el parámetro es mayor y es correcto
     if (fecha <= actual && fecha != null)
     {
        edad = actual.Year - fecha.Year;
     }
     else
     {
        return "La fecha seleccionada es superior a la fecha actual";
     }





// Consulto si ya cumplió años if (new DateTime(actual.Year, fecha.Month, fecha.Day) < actual) edad--; return "Tu tienes " + edad + " años"; }

Vamos a nuestra vista Index y para el primer ejemplo agregamos la siguiente línea.

<script  src=" @Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")"  type="text/javascript">
</script>

Agregamos este otro código.

<div align="center">
@using ((Ajax.BeginForm("CalcEdad",
new AjaxOptions()
{
HttpMethod = "Post",
UpdateTargetId = "result"
})))
{
<label> Fecha de nacimiento:</label>
<input type="text" name="fechaNacimiento" id="fechaNacimiento" />
<input type="submit" value="Calcular Edad" />
}


    <hr />

<div id="result"></div>
</div>

Con este código estamos indicando que vamos a utilizar el método CalcEdad del controlador y que vamos a utilizar el modo POST para pasar los parámetros y el id del contenedor que queremos que actualice, pero si pueden notar hemos agregado un js que se llama jquery.unobtrusive-ajax.js, bueno esta parte se merece una explicación más detallada que paso a comentar:

Unobtrusive Ajax en MVC3: La idea es evitar mezclar código script con código HTML, con Unobtrusive Ajax vamos a poder separar el código javascript del código HTML, pero ustedes dirán que eso ya se hace, pero acá abajo les hago un ejemplo para que vean a que me refiero cuando digo esto:

<h2>Normal Ajax</h2>
<% using (Ajax.BeginForm("PostData", new AjaxOptions() { HttpMethod="Post", UpdateTargetId="datadiv"})) { %>

<label for="name">Name: </label>
<input type="text" name="name" id="name"/>
<input type="submit" value="Send" />
<% } %>
<hr />
Aquí irá el resultado: <p />
<div id="datadiv">
</div>


El código de arriba en MVC 2 daría como resultado este código de abajo:

<h2>Normal Ajax</h2>
<form action="/Home/PostData" method="post"
onclick="Sys.Mvc.AsyncForm.handleClick(this, new Sys.UI.DomEvent(event));"
onsubmit="Sys.Mvc.AsyncForm.handleSubmit(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, httpMethod: &#39;Post&#39;, updateTargetId: &#39;datadiv&#39; });">
<label for="name">Name: </label>
<input type="text" name="name" id="name"/>
<input type="submit" value="Send" />
</form>
<hr />
Aquí irá el resultado: <p />
<div id="datadiv">
</div>


Pero en MVC 3 da este otro resultado:
<h2>Normal Ajax</h2>
<form action="/Home/PostData"
data-ajax="true" data-ajax-method="Post" data-ajax-mode="replace"
data-ajax-update="#datadiv" method="post">

<label for="name">Name: </label>
<input type="text" name="name" id="name"/>
<input type="submit" value="Send" />
</form>

<hr />
Aquí irá el resultado: <p />
<div id="datadiv">
</div>

Si pueden ver no hay nada de javascript mesclado, es mucho mas legible y prolijo.

Para utilizar Unobtrusive AJAX tiene que estar habilitada en el web.config.
<configuration>
<appSettings>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
</configuration>


De todos modos la pueden habilitar en la vista que ustedes cada vez que la utilicen con la siguiente linea.
<% HtmlHelper.UnobtrusiveJavaScriptEnabled = true; %>


Bien sabiendo esto vamos a continuar, ahora podemos ejecutar nuestro proyecto.
image
Si pueden ver hemos ejecutado un metodo desde nuestra vista con Unobtrusive AJAX, bien ahora vamos hacer el mismo ejemplo pero con JQuery, la libreria de JQuery no la tenemos que insertar ya que nuestro proyecto la tiene por default en el template, así que lo único que hacemos es insertar el siguiente código.
JQuery
<hr />
<div align="center">
<script type="text/javascript">
   1:  
   2:          $(document).ready(function () {
   3:              $("#btnCalc").click(function () {
   4:                  $.ajax(
   5:                 {
   6:                     url: '/Home/CalcEdad',
   7:                     type: "POST",
   8:                     data: { fechaNacimiento: document.getElementById("fechaNacimiento2").value },                    
   9:                     success: function (data) {                        
  10:                         $("#result2").html(data);
  11:                     }                    
  12:                 });
  13:              });
  14:          });
  15:  
  16:      
</script>
<label> Fecha de nacimiento:</label>
<input type="text" name="fechaNacimiento2" id="fechaNacimiento2" />
<input type="submit" id="btnCalc" value="Calcular Edad" />
<hr />
<div id="result2"></div>
</div>

Y ahora ejecutamos nuestro proyecto y veremos que funciona igual.
image

Aquí dejo el link del archivo zip del proyecto de este POST.
MVC 3 con Razor - 6º POST
Y si quieren descargar los archivos de los POST anteriores vayan a este link.
MVC 3 con Razor – Archivos de todos los POST.

En resumen hoy hemos aprendido a:

Crear un metodo en un controlador.
Agregar las referencias y habilitar el Unobtrusive AJAX.
Llamar a un metodo desde Unobtrusive AJAX.
Llamar a un metodo desde JQuery.

Recomendaciones:
Introducción al desarrollo web con WebMatrix
Curso Cloud Computing - Windows Azure
Curso Cloud Computing (parte 1) – Introducción
 

Bueno gente hasta aquí hacemos hoy porque sino se hace muy largo de leer. Para el próximo voy a hablar de cositas de Facebook y Twitter, es bastante interesante como se trabaja en MVC 3 pero de una forma más fácil y mucho más eficiente, espero sigan investigando y nos vemos para el próximo POST 

Para cualquier consulta pueden dejar sus mensajes aquí o mandar me un correo electrónico a Moises.Rivas@msptechrep.com.

Tags:

MVC | web

5 - MVC 3 con Razor ~ Directiva @model con Base de datos

by Moisés Rivas 20. February 2011 14:48

Hola gente, hoy vamos a hablar de la directiva @model, con algo de base de datos.

La directiva @model ofrece una forma más clara de referenciar modelos fuertemente tipados en una vista.  Para ver como funciona primero vamos a trabajar en un ejemplo creando una tabla en nuestra DB y despues configurando modelo que utilice esa tabla.

Pero mejor un ejemplo para que veamos esto.

Vamos  agarrar el proyecto anterior con la base de datos configurada, y vamos a crear una tabla nueva que se va a llamar UsersDB.
image

Agregamos un modelo a nuestra proyecto donde utilizaremos la tabla creada. Para hacer esto nos vamos a la carpeta modelo y hacemos clic en el boton derecho y agregar – nuevo elemento.
image


Elegimos una clase de Linq de SQL.
image

En primer plano nos va aparecer un documento en blanco done tendremos que agregar nuestra tabla.
image


Para ello hacemos clic en Explorador de Servidores se nos abre la base de datos y arrastramos nuestra tabla al centro del espacio en blanco, este proceso configura automáticamente la tabla con nuestro modelo.
image


Agregamos un nuevo controlador, haciendo botón derecho en la carpeta Controllers y Agregar Controlador.
image


Para utilizar nuestro modelo tenemos que hacer como en el 2º POST, para eso insertamos el siguiente código.

using MVC3Razor.Models;

namespace MVC3Razor.Controllers
{
public class DatosUserDBController : Controller
{
DataDBModeloDataContext usuariosDB = new DataDBModeloDataContext();

public ActionResult UsuariosListDB()
{
var us = from f in usuariosDB.UsersDB orderby f.idUser ascending select f;
return View(us);
}

}
}
Bien ahora agregamos una nueva vista, pero para hacerlo más ordenado vamos a crear una nueva carpeta DatosUserDB y ahi agregaremos nuestra vista.
image

Ahora le indicamos que vamos a crear una vista fuertemente tipada y seleccionamos el modelo de la tabla que hemos configurado, de seguro notaran que salen otros modelos más, son de los modelos que ya estamos utilizando, también le indicamos que vamos usarla para mostrar una Lista de esta tabla.
image


Esto nos genera un código de ejemplo donde ya lo podemos ejecutar.
image

. Pero nosotros vamos a insertar mejor un enlace en nuestro menú a esta nueva vista, para ello vamos a nuestra template activa y agregamos la siguiente línea.

<li>@Html.ActionLink("Lista de Usuarios de DB", "UsuariosListDB", "DatosUserDB")</li>
image


Ahora si ya podemos ejecutar nuestro proyecto.

image

Bien ahora vamos a ver como entra en juego nuestro @model, si pueden observar veran que en la vista que creamos esta la directiva @model al principio, esta directiva es un reemplazo de utilizar @inherits, abajo un ejemplo.


@model IEnumerable<MVC3Razor.Models.UsersDB>

@inherits System.Web.Mvc.WebViewPage<IEnumerable<MVC3Razor.Models.UsersDB>>

  
De esta forma no tendremos que indicar nunca más el @inherits para indicar la clase base, por defecto si no esta esta directiva nuestra base deriva de System.Web.Mvc.ViewPage<TModel>

Ahora les dejo a ustedes que agreguen las vistas de Edición, detalles y eliminación de esta tabla.

En resumen hoy hemos aprendido a:
Agregar una tabla una base de datos.
Agregar un modelo de Linq de SQL.
Agregar una tabla al modelo.
Utilizar nuestro modelo.
Referenciar con @model


Recomendaciones:
WebMatrix Parte 3 – Demos un poco de estilo
WebMatrix Parte 4 – Utilizando Layout
WebMatrix Parte 5 – utilizando datos

Bueno gente hasta aquí hacemos hoy, para la próxima vamos a ver como un poco de como se trabaja con JQuery, Facebook y Twitter en MVC 3.

Para cualquier consulta pueden dejar sus mensajes aquí o mandar me un correo electrónico a Moises.Rivas@msptechrep.com.

Tags:

MVC | web

4 - MVC 3 con Razor ~ Como insertar un tamplate

by Moisés Rivas 13. February 2011 20:24

Hola que tal, hoy voy hablar de como insertar un template en nuestro proyecto MVC 3, bueno sin más preámbulo vamos a empezar.

Lo primero que vamos hacer es descargar un template para que se nos haga más fácil.
image


De esta web voy a descargar un template gratis, hay muchos otros sitios, pero a mi me gusto este.
image


Ahora lo vamos a descargar en la carpeta donde tenemos los estilos en nuestro proyecto MVC.
image


Ahora vamos a cambiar la extensión y el nombre al archivo index.html y lo vamos a nombrar _Layout.cshtml.
image

Si lo editan al archivo van a encontrar todo el html que propone el template.
image

Ahora vamos a reemplazar algunas partes para que podamos usar la template en todas las páginas de nuestro proyecto.
imageimageimageimage

Estas partes serian las más importantes, si se dan cuenta todas las partes que hemos reemplazado nuestro VS nos coloreo con una linea roja abajo, es porque menciona un error, sucede que la página esta en la carpeta Content/themes/browstone/ donde no esta configurado para usarce como template desde este lugar, para ser mas ordenados y para que reconozca nuestro código la tenemos que poner en la carpeta Views, en el lugar de la template original y a la anterior vamos a renombrarla para que quede por las dudas a _Layout2.cshtml.
image


Bien ahora ya podemos ejecutar nuestra aplicación y veremos nuestro template en funcionamiento con MVC 3.
image


Ahora algunos tips, si le cambiamos el nombre a nuestra template, solo tenemos que indicarlo en la page _ViewStart.cshtml que esta en la carpeta Views de nuestro proyecto MVC 3.
image


También podemos indicar que alguna página utilice otra template y que no utilice la que esta por default, esto lo logamos indicando n la vista el layout nuevo.

image
image
De esta forma podemos tener varios template en la misma aplicación y tan solo con una línea podemos cambiar todo el estilo de nuestra página.

Otro tip es que en WebMatrix sucede distinto cuando creamos una aplicación Web con el motor de vista Razor, esto nos crea una Page comun, ahi ya no tenemos la Page _ViewStart.cshtml de MVC 3, en su lugar tenemos una página que se llama _PageStart.cshtml, donde indicamos nuestro template por default.
image

Bueno espero que les allá gustado, ahora los invito a que sigan investigando sobre como usar los template, esto solo es una forma muy interesante y fácil de hacer las cosas con MVC 3, ahora el resumen, de lo que hemos aprendido hoy:

Descargar template de www.template.org.
A convertir un template html a un template cshtml.
Utilizar varios template en una misma aplicación.


Recomendaciones:
WebMatrix parte 8 – Creando una página de borrado de datos
WebMatrix parte 9–Publicando nuestro sitio

La verdad que hoy no hable de la palabra reservada @model, pero me parecio que iva a ser muy largo el POST, pero les juro que para el proximo hablo sobre esto y también le vamos a agregar algo de base de datos.
Para cualquier consulta pueden dejar sus mensajes aquí o mandar me un correo electrónico a Moises.Rivas@msptechrep.com.

Tags:

MVC | web

3 - MVC 3 con Razor ~ Trabajando con Membership

by Moisés Rivas 12. February 2011 03:03

Hola gente, continuando con el proyecto anterior, hoy vamos a hablar de como utilizar ASP.NET Membership que fue una herramienta que me resulto muy útil cuando trabajaba con los proyectos de páginas ASP.NET comunes, pero que es Membership, para el que no sabe, les dejo una breve descripción.

La API de Membership que viene con ASP.NET, y en concreto el proveedor de Membership para trabajo contra SQL Server -SqlMembershipProvidernos provee de medios para almacenar información básica sobre usuarios, el nombre, su login y su clave, etc. En este gráficopueden ver la estructura completa creada por ASP.NET, hay herramientas como aspnet_regsql.exe para que puedan utilizar la base de datos de Membership  en sus base de datos para dar soporte a SqlMembershipProvider y relacionados.

Bueno ahora vamos a empezar con el ejemplo, primero vamos abrir nuestro proyecto MVC 3 con Visual Studio 2010 y después vamos Proyecto y después a Configuración de ASP.NET.
image

Esto nos abre la parte de configuraciones de nuestra aplicación y nos permite crear variables de aplicación, usuarios, habilitar la parte de Roles y dar permisos en nuestras carpetas.
image


Esto llena directamente el Web.config por nosotros con las configuraciones necesarias, en esta oportunidad lo hago con la herramienta que viene incluida de configuraciones de aplicación, vamos a habilitar la utilización de roles y agregar dos roles, despues vamos a agregar dos usuarios.
imageimageimage

Ahora vamos a nuestro proyecto Web MVC 3 y le vamos a crear una carpeta.
image

Después agregamos los archivos que creamos en los POST a esta nueva carpeta, para hacer más fácil y también agregue un nuevo control DataUserController donde puse las acciones de estas paginas.
image

Ahora vamos abrir nuevamente la herramienta de Configuracion de ASP.NET, esto nos abre la pagina de administración de la aplicación y ahí nos vamos a Seguridad y después a Administración de reglas de acceso.
image

Pues bien antes en ASP.NET clásico solo teníamos que indicar la carpeta que queriamos que entrara un usuario o un grupo de Role determinado, por ejemplo aquí abajo he puesto que solo los Roles de Administrador puedan entrar a la Carpeta DatosUser.
image 

Esto hacia que un usuario con el Rol Administrador pueda ingresar a esta carpeta y todos los demás no puedan. Bien en este caso tenemos cargados nuestros Roles y Usuarios entonces en MVC 3 para usarlo ya no tenemos que cargarlo a nivel de web.config ahora lo podemos cargar a nivel de Controller, Métodos o clases, en este caso solo tendríamos que indicar [Autorize(Roles=”Administrador”)] sobre toda la clase DatosUserController y esto no nos dejaria entrar a todas las Page que dependan de este Controller.

namespace MVC3Razor.Controllers
{
    [Authorize(Roles="Administrador")]    
    public class DatosUserController : Controller
    {
        // Utilizando el modelo Users
        private static Users usuarios = new Users();

        // Creamos un ActionResult para la lista de usuarios 
        public ActionResult UsuariosList()
        {
            return View(usuarios.listaUsuario);
        }
// --------------------------------


Por ejemplo, acá tenemos un usuario con el Rol de Contendista intentando acceder a la Page Lista de Usuarios.
image


Ahora vamos a iniciar sesión con un usuario Administrador y en este si nos deja acceder.
image


Pero a todo esto hemos iniciado sesión pero nunca les mostré la base de datos y donde se guardan estos datos, bueno si ustedes se van a su aplicación y poner agregar nuevo archivo existente en la carpeta App_Data.
image

Ahora vamos al directorio de nuestra aplicación y en la carpeta App_Data van a ver dos archivos de base de datos que estan excluidos del proyecto pero n realidad en el web.config esta es la base de datos a tacha cuando iniciamos la herramienta de configuración, en el web.config también podemos configurar otra db, pero tenemos que asegurarnos que tiene la misma estructura que esta db de ejemplo.
image

Pues bien ahora si incluimos la db de seguro podremos navegarla desde nuestro VS2010 para ver las tablas y sp que tenemos.
imageimage


Bueno ya hemos hablado bastante, ahora por ultimo voy a agregar unas líneas para ver lo fácil que es para utilizar , nos vamos a una pagina ya existente que en este caso vamos a abrir la Index.cshml y n el content escribimos lo sigueintes.

@{
    ViewBag.Title = "Principal";
}

<h2>@ViewBag.Message</h2>
<p>
    
    @if (Request.IsAuthenticated)
{
    <text>
        Usted inicio sesión el @DateTime.Now.ToString("yy|MM|dd hh:mm:ss") <br />
        Su usuario es @Context.User.Identity.Name <br />
    </text>
}
else
{
    <text>
        Todavia no se ha iniciado sesión.
    </text>
}

</p>

Si lo ejecutamos vemos esto.
image

image


Bueno espero que les allá gustado, esto de Membership es bastante completo, viene con sp incluidos que hacen un montón de trabajo y en conjunto con los Profile, los invito a que sigan investigando., en resumen, hasta el momento hemos aprendido a:

Configuraciones básicas para Membership con la herramienta de Configuración de ASP.NET
Habilitar el uso de Roles, Agregar Usuarios y Roles.
Asignar el permiso de los roles a los controladores.
Insertar código si esta logueado el usuario.


Recomendaciones:
Webmatrix Parte 6, Creando un formulario para agregar datos
WebMatrix parte 7 – Creando una página de edición de datos

Para el proximo POST voy a hablar de la palabra reservada @model y también vamos a trabajar con Layout y template ya creados para insertarlos en nuestras aplicaciones, esta parte es porque salieron varias consultas sobre como implementar template varios en mi proyecto MVC.

Para cualquier consulta pueden dejar sus mensajes aquí o mandar me un correo electrónico a Moises.Rivas@msptechrep.com.

Tags:

web | webmatrix | MVC


Concurso CodeCamp

Conocé mas acerca del mayor evento de la
Comunidad Microsoft en Argentina.

WWW.CODECAMP.COM.AR

------------------------------------------------

Para los que están Participando:

-Que es una célula?

-Como puedo promocionar mi proyecto?

-Dreamspark

Administradores:

Armando Meabe.
Guillermo Bellmann.
Miguel Saez.
Nicolás Vilela.
Ivana Tilca.

Esperamos que disfrutes de este sitio, lo hicimos dando nuestro mayor esfuerzo.

Nunca te olvides:
El límite es tu imaginación.

Especialistas Microsoft

Daniel Levi (IT Pro´s)

Daniel Priego (Expression Studio)

Debora Di Piano (Team Fundation Server)

 


Channel 9 - Visual Studio 2010 and .NET Framework 4 Training Course

Includes videos and hands-on-labs designed to help you learn how to utilize the Visual Studio 2010 features and a variety of framework technologies including: C# 4.0, Visual Basic 10, F#, Parallel Computing Platform, WCF, WF, WPF, ASP.NET AJAX 4.0, ASP.NET MVC Dynamic Data
Watch it online now ›

The Code Project – Tech Summit

Join us at The Code Project Tech Summit to experience the Microsoft Visual Studio 2010 launch alongside the Visual Studio team. At this virtual event you can explore, network, and learn from the experts on the latest and greatest version of Microsoft Visual Studio.
Watch it online now ›