Viernes, 09 de septiembre de 2016

Continuando con el ejercicio vamos a crear un controlador y antes traduzco (según yo) lo que el autor define como Modelo-vista-controlador.


"MVC es un patrón para desarrollo de aplicaciones que cuentan con una buena arquitectura, son fáciles de probar, y fáciles de mantener. Las aplicaciones basadas en MVC constan de:

Modelos - Clases que representan los datos de la aplicación y usan lógica de validación para asegurar las reglas del negocio de los datos.

Vistas - Plantillas que tu aplicación usa dinámicamente para generar respuestas HTML.

Controladores - Clases que manejan las peticiones entrantes en el navegador, recuperan el modelo de datos y específican plantillas de forma que generan una respuesta en el navegador."


Vamos a agregar una clase controlador y esto lo hacemos yendo al Explorador de soluciones, nos posicionamos en la carpeta "Controllers" y damos clic con botón derecho y en el menú contextual damos:

Agregar - Controlador ...

Después de esto aparece una ventana llamada "Agregar scaffold", seleccionamos controlador de MVC 5 en blanco y damos clic en el botón "Aceptar".

Para nombrar al controlador le daremos el nombre de "HolaTierra".

Como sabemos VS nos genera código (la clase del controlador) además de una subcarpeta en la carpeta de vistas (View).

Ahora vamos a modificar el código en HolaTierraController.cs con lo siguiente:

// GET: /HolaTierra/
public string Index()
{
     return "Esta es mi página por <B>omisión (acción del método default) </B>";
}

//
// GET: /HolaTierra/Welcome/
public string Welcome()
{
    return "Este es el método de la <B>bienvenida (acción del método Welcome)</B>";
}


Y probamos en el navegador con el siguiente resultado...

"ASP.NET MVC invoca diferentes clases controlador ( y diferentes acciones de los metodos al interior de estas clases ) dependiendo de la petición que se hizo en la URL. La URL default usada por ASP.NET MVC utiliza un formato como éste para derterminar que código se invocará:

/[Controller]/[ActionName]/[Parameters]


Podemos percatarnos que si damos clic en el botón de Google Chrome, aparece la página por default de la plantilla pero si usamos la nomenclatura que acabamos de mencionar se invoca la clase HolaTierraController.cs (/localhost:53915/HolaTierra) y su método default Index.

La forma como se fija este formato de entrada en las URL, es por medio del RouteConfig.cs ubicado en la carpeta App_Start.

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 = "Home", action = "Index", id = UrlParameter.Optional }
              );
       }
}


Ahora si queremos invocar nuevamente el controlador HolaTierra pero la acción del método Welcome, tendríamos que entrar en la URL del navegador lo siguiente:

Ahora modificamos el método Welcome para que reciba parámetros, podemos observar que dando un valor en el pase de parámetros este será mostrado en caso de que la invocación a la acción del método no mande dicho parámetro.

// GET: /HolaTierra/Welcome/
public string Welcome(string name, int numTimes = 1)
{
     return HttpUtility.HtmlEncode("Hello " + name + ", numTimes is " + numTimes);
}

El formato de la URL para pasar parámetros es /localhost:53915/HolaTierra/Welcome?name=Mickey&numtimes=4, donde después del nombre del método (Welcome) indicamos al navegador con el símbolo "?" el inicio del pase de parametros y la combinación nombredelparametro=valor y para separar cada parametros se utiliza el símbolo "&".

Ahora vamos usar el parametro ID que se definido en RouteConfig.cs ({controller}/{action}/{id}), modificamos nuevamente el método Welcome.

public string Welcome(string name, int ID = 1)
{
     return HttpUtility.HtmlEncode("Hello " + name + ", your ID is " + ID);
}

La invocación en la URL será /localhost:53915/HolaTierra/Welcome/3?name=Mickey.

El ejercicio contempla mandar los parámetros en el formato /Welcome/par1/par2, para ellos creamos un nuevo MapRoute en RouteConfig.cs donde ahora agregaremos el parametro name.

routes.MapRoute(
     name: "Hola",
     url: "{controller}/{action}/{name}/{id}"
);

Para invocar en la URL como /localhost:53915/HolaTierra/Welcome/Ann%20Margarite/6

Al final el autor de autor hace precisiones acerca de que la forma de enviar parámetros en la mayoría de las aplicaciones funciona bien, pero que en las siguientes entregas se verá la forma de enlazar los datos entre los modelos y que no será necesario modificar el formato default.

Otra observación sobre seguridad es el uso de HttpUtility.HTMLEncode que nos menciona el autor "protege a la aplicación de entradas maliciosas (JavaScript)"

Hasta aquí la segunda entrega.

Profesor Enrique Nash.

Webgrafía

http://www.asp.net/mvc/overview/getting-started/introduction/adding-a-controller


Publicado por neofito69 @ 9:57  | .NET - C#
Comentarios (0)  | Enviar
Comentarios