Sie sind auf Seite 1von 7

Contenido

ASP.net MVC ................................................................................................................................. 2


Modelos..................................................................................................................................... 2
Model Binding ....................................................................................................................... 2
Model binding explcito. ........................................................................................................ 2
Formularies y HTTP Helpers .......................................................................................................... 3
Usando formularios ................................................................................................................... 3
Las acciones y los mtodos ....................................................................................................... 3
Helpers ...................................................................................................................................... 3
Anotaciones de datos y validaciones ............................................................................................ 5
Detrs de cortinas de las anotaciones ...................................................................................... 5
Validaciones y model binding................................................................................................ 5
Validaciones y Model State ................................................................................................... 6
Acciones de controlador y errores de validacin .................................................................. 6
Lgica de validacin personalizada .............................................Error! Bookmark not defined.
ASP.net MVC

Modelos
Para pasar informacin a las vistas que no se encuentren dentro del modelo asignado:

Pasar la informacin con las viewBag


Crear un modelo de vista-especifica que tendr tanto el modelo principal como la
informacin extra y la vista se e asigna a ese modelo aprovechando el strongly type

Cuando se enva un HTTP POST request back, el explorador automticamente recolecta toda la
informacin que el usuario ingreso en el formulario y enva los valores con sus nombres
asociados mediante la request.

The happy Path: es el cdigo que se ejecuta cuando esl modelo esta en un estado valido y tu
puedes almacenar el objeto en la base de datos. La propiedad ModelState.IsValid contiene si el
estado del modelo is valido o no

The sad Path: Es la accin que toma cuando el modelo es invlido, y el controlador necesita
recrear la vista donde se ejecut el erro para que el usuario pueda arreglarlo

Model Binding

La input es nombrada para que concuerden con las propiedades del modelo, as es posible
asociar las input ingresadas por el usuario de forma automtica sin estar haciendo
conversiones o cdigo extra

Cuando una accin tiene como parmetro un modelo, el MVC runtime usa el model binder
para armar el parmetro, si el model binder encuentra una propiedad llamada Ttulo, esta
busca el valor con el nombre Titulo en la request. El modelo binder usa componentes
conocidos como value provider para buscar los valores en diferentes reas de la request,
incluso ve en otras reas como la route data, query string

Tambin puede alimentar a parmetros primitivos en una accin.

Model binding explcito.


El modelo binding implcito trabaja cuando tiene un parmetro en su accin pero se puede
invocar de manera explcita usando los mtodos UpdateModel o TryUpdateModel en el
controlador

Para evitar el over-posting se deben de indicar que parmetros se usaran para que el model
binder solo busque en esos parmetros:
UpdateModel(product, new[] { "Title", "Price", "AlbumArtUrl" });
Formularies y HTTP Helpers

HTML Helpers: ayuda a que la URL apunte a la localizacin correcta, los elementos del
formulario (nombre y valores) estn correctos para el model binding y otros elementos que
muestren el apropiado error cuando el model binding falla

Usando formularios

Las acciones y los mtodos


Formulario es un contenedor de elementos de entrada (button, checkboxes, text inputs; etc),
poseen dos atributos que indican a donde va a enviar la informacin y como esta es enviada:

Action: Indica la url a donde se enviara la informacin


Method: indica cmo se debe de enviar la informacin, mediante http POST o http
GET, por defecto enva la informacin mediante http GET

Si el Method es GET al hacer submits el explorador toma los nombres de las entradas y sus
valores y los coloca en una querystring, si es POST esto se colocan dentro del cuerpo de una
HTT request.

Helpers

Finalidad: Facilitar la creacin de vista

Htm.BeginForm: Ayuda a la creacin de una robusta etiqueta form.

@using (Html.BeginForm("Search", "Home", FormMethod.Get,


new { target = "_blank" })){

<input type="text" name="q" />


<input type="submit" value="Search" />
}

Si no se indica ningn parmetro ( @using(Html.BeginForm()) este manda un HTTP Post a la url


actual.

Html.ValidationSummary: Lista desordenada de todo los errores de validacin en el


diccionario del ModelState

@Html.ValidationSummary (excludePropertyErrors: true)

ExcludePropertyError: asignndole el valor true se le indica que todo los errores que tengan
que ver con la propiedad de los modelos sea ignorada de resumen de errores y no se
mostraran.
Html.TextBox and Html.TextArea: Los textbox helper renderizan las etiquetas con el tipo de
atributo text. El textarea helper renderiza elementos <textarea> para una entrade de
multiples lineas

@Html.TextBox("Title", Model.Title)

@Html.TextArea("text", "hello <br /> world", 10, 80, null)

Html.Label: retorna un elemento <label/> usando los parmetros string para renderizar el
texto y el atributo fo, su propsito es asignar informacion a otro elemento inputs y mejorar la
accesibilidad a la aplicacin

Html.Label(GenreId)

Siempre que sea posible el helper buscara algn model disponible en la metadata en la
construccin de lo mostrado

Html.DropDownList and Html.ListBox

Ambos retornan un elemento <select /> ddl permite seleccin de un tem y listBox permite
seleccin multiple asignando el atributo multiple

[Capte la atencin de los lectores


mediante una cita importante
extrada del documento o utilice
Html.ValidationMessage: Cunado esteun valor existe
espacio de un campo
para resaltar particular en del model-view se
un punto
puede utilizar para mostrar el mensaje de error
clave. Para colocar el cuadro de
texto en cualquier lugar de la pgina,
ModelState.AddModelError("Title", "What a terrible name!");
solo tiene que arrastrarlo.]
@Html.ValidationMessage("Title")

Se asigna el error y se muestra con el helper.

Los helpers no son mtodos definidos en a clase System.Web.Mvc.HtmlHelper<T>, en sus lugar el


framework define la mayora de estos como mtodos de extensin, estos se representan
listados por el IntrelliSense con una flecha hacia abajo a la izquierda

Los helpers te dan el control completo del HTML sin codificar muchas lneas de cdigo,
codifica correctamente atributos, crea de forma apropiada las URLs al recurso correcto, y
establecen los nombras de los elementos inpts para simplificar el model bindir.
Anotaciones de datos y validaciones

Validar los model values a travs de las anotaciones que no solo se enfocan en validar sino que
tambin proveen metadata y el framwork no solo maneja validaciones sino que las usa para
generar HTML y mostrarlo y editar modelos

Data annotation son atributos definidos en el nombre de espacio


System.ComponentModel.DataAnnotations, estos proveen validaciones tanto del lado del
servidor como del cliente cuando se usan en una propiedad del modelo.

<required> (validacin tanto del lado del cliente como del servidor) Lanza un erro de
validacin cuando el valor de la propiedad es nulo o vaco.

<StringLength> Verifica si el tamao de un String no sobrepasa el que indicado en la propiedad

<regularExpresion> Verifica si el texto tiene la forma y el contenido deseado mediante


expresiones regulares

<Range> especifica el mnimo y el mximo valor de un atributo numrico, fechas y decimales

<Compare> Compara si dos propiedades de un modelo tienen el mismo valor

<remote> Permite realizar una validacin del lado del cliente con una llamada de retorno del
servidor. <Remote("ActionController", "ControllerName")>

Detrs de cortinas de las anotaciones

Las caractersticas de validacin de ASP.NET MVC son parte de una cadena sistema coordinado
que involucra:

Model binder
Model metadata
Model validator
Model state

Validaciones y model binding


El framework ejecuta la lgica de validacin durante el model binder
o Se ejecuta la actualizacin del modelo con los nuevos valores
o El model binder usa los metadatos del modelo
o Obtiene todo los validadores del modelo
o El validador del modelo (DataAnnotationsModelValidator ) busca todos los atributos
de validacin y aplica la lgica de validacin
o El model binder obtiene todo los errores y los pone en su lugar dentro del
model state
Validaciones y Model State

Los model state no solo contienen los valores que se intentaron agregar a las propiedades del
modelo si no que contiene todo los errores asociado a cada propiedad, si existe algn error
modelState.IsValid = true

Acciones de controlador y errores de validacin

Las acciones de controlador deciden que colocar cuando, las validaciones del modelo son
exitosas y cuando fallan, por lo generar cuando son exitosas se da lugar para guadar y
actualizar la informacin y si se da un error este re- renderiza la pgina con los mismos valores
para que el usuario vea los errores o campos vacos para corregirlos

Membresa, autorizacin y seguridad

La seguridad es algo que debes hacer pero no es divertido, es la regla del programador.

Ejemplos prcticos de seguridad web

Toda la informacin ingresada por el usuario codifcala, HTTP encode


Piensa en la porcin de tu sitio que estar con acceso annimo o si necesita
autenticacin
Usa expresiones regulares para tratar de eliminar las entrada HTML de los usuarios
Usa solo http cookies cuando no necesites acceder a las cookies via scripy de lado del
cliente
Recordar que las entradas externas no son campos de formularios obvios.
Considerar el uso del AntiXSS codificador componente de Microsoft web protection
Library

Usando atributos autorizados que requieran login


El primer paso respecto a la seguridad de una aplicacin: requerir que el usuario haya iniciado
sesin para acceder a una especfica parte de la aplicacin.

Esto se logra con un filtro de accin autorizada, AuthorizeAttribute el filtro por defecto de
autorizacin incluido en ASP.NET MVC.

Autenticacion: Es estar verificando que el usuario sea quien ellos dicen ser a travs de diferentes
mecanismos de inicio de sesin

Autorizacion: Estar verificando que ellos puedan hacer lo que ellos quieran respecto a su
sitio(sistemas basados en roles o reclamos)
El atributo de autorizacin, AuthorizeAttribute tiene como propsito verificar que el usuario
este autorizado para acceder o llamar al controlador, sin tener ningn rol o usuario el usuario
simplemente debe de estar autenticado para realizar esta accin, si el usuario intenta acceder
a la accin el servidor retornara el cdigo de estado 401 Unauthorized

Cmo funciona?

El atributo de autorizacin es un filtro que se ejecuta antes de la accin del controlador


asociada, su trabajo principal est en el mtodo OnAuthorization , definido en la interfaz
IAuthorizationFilter

El cdigo de estado 401 es preciso para los acceso innautorizados pero no es muy amigable
para los usuarios para mostrar, en su lugar se usa el cdigo 302 para que se redireccione a la
pagina de autenticacin. En asp.net MVC, este proceso es anejado por componente
middleware OWIN ( OpenWeb Interfaz para. NET)

Asegurando tu aplicacin completa usando filtros de autenticacin global

Toda aplicacin debera requerir autorizacin, requiriendo autenticacin por defecto


exceptuando aquellos escenarios donde se pueda acceder como annimo como la pgina
principal o la URL para realizar el proceso de inicio de sesin.