none
Que quiere decir lo que esta entre [].

    Question

  • 
    
    [DisplayName("Email Address")]
    [DataType(DataType.EmailAddress)]
    public string EmailAddress {get; set;}
    

    Hola amigos, recien empiezo en esto y he visto algunos codigos como este.

    Que son lo que están entre corchetes[] ¿filtros?

    Si alguien me puede dar una pequeña explicación le agradezco.

    Saludos.


    Thursday, May 19, 2011 3:43 PM

Answers

  • Para contextualizar, en casos generales, siempre que veas algo entre corchetes como lo que muestras aquí, estamos hablando de lo que en .NET conocemos como atributos. Los atibutos son transversales a .NET (existen en ASP.NET MVC, en webforms, winforms, wpf, consola, etc) y te permiten especificar "información adicional" sobre un objeto, clase, propiedad, método, etc...

    En ASP.NET MVC se usan para añadir información sobre que muestra un viewmodel (las DataAnnotations que ha mencionado Laura), y así poder añadir reglas de validación o mostrar información de una determinada manera. Pero también se usan para especificar filtros (el caso típico de [Authorize]) y para más tareas.

    Además tu puedes crearte tus propios atributos y decidir para que quieres que sirvan: es un método totalmente extensible (insisto, de .NET en general).

    Saludos!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis
    Friday, May 20, 2011 6:14 AM

All replies

  • Hola Daniel, te comento que lo que aparece entre corchetes, dentro de la porción de código que muestras, se llama "Data Annotation". En este enlace puedes encontrar más información sobre el tema: http://blogs.msdn.com/b/efdesign/archive/2010/03/30/data-annotations-in-the-entity-framework-and-code-first.aspx

    Básicamente, te deja definir "reglas" (por ejemplo, la estructura de los datos que acepta un campo, si el campo es obligatorio, entre muchas otras). En tu caso, [DisplayName("Email Address")], significa que, por ejemplo, cuando uses el helper @Html.LabelFor(EmailAddress) se mostrará Email Address.

    Saludos!

     

    Laura.-

    Thursday, May 19, 2011 8:29 PM
  • Para contextualizar, en casos generales, siempre que veas algo entre corchetes como lo que muestras aquí, estamos hablando de lo que en .NET conocemos como atributos. Los atibutos son transversales a .NET (existen en ASP.NET MVC, en webforms, winforms, wpf, consola, etc) y te permiten especificar "información adicional" sobre un objeto, clase, propiedad, método, etc...

    En ASP.NET MVC se usan para añadir información sobre que muestra un viewmodel (las DataAnnotations que ha mencionado Laura), y así poder añadir reglas de validación o mostrar información de una determinada manera. Pero también se usan para especificar filtros (el caso típico de [Authorize]) y para más tareas.

    Además tu puedes crearte tus propios atributos y decidir para que quieres que sirvan: es un método totalmente extensible (insisto, de .NET en general).

    Saludos!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis
    Friday, May 20, 2011 6:14 AM
  • Gracias por las respuestas!

     

    Una dudilla mas hablando de [Authorize], como sería un tipico login de usuarios en Mvc?

    Yo vengo de php y allí trabajamos con sessiones.

    Busco si existe usuario en db -> si existe -> creo session -> en cada pag. verifico que exisite session

     

    Se puede trabajar igual o se trabaja de otra manera.

     

    Saludos y gracias!!

    Friday, May 20, 2011 4:07 PM
  • Buenas!

    A grandes rasgos viene a ser lo mismo, salvo que en ASP.NET la cookie que autentica al usuario no es la de sesión, sino otra cookie addicional. Así puedes mantener autenticación sin necesidad de sesión.

    Teoricamente a cada página (realmente "petición") debes mirar si existe la cookie de autenticación y si esa es válida. Pero en lugar de funcionar como PHP donde eso suele ser explícito (es decir, sueles hacerlo tu), aquí el framework te ayuda haciéndolo él. En ASP.NET MVC, marcar una acción con [Authorize] o bien marcar un controlador significa que esa acción (o bien todas las acciones de ese controlador) sólo podrán ser invocadas por usuarios previamente autenticados. Si el usuario no está autenticado se lo redirige a una URL que suele estar especificada en el web.config.

    Hay más maneraas de preguntar si un usuario está autorizado como usar la propiedad User de HttpContext que da información sobre el usuario autenticado (caso típico: Context.User.Identity.Name para saber el nombre). Para obtener el objeto HttpContext vinculado a la request actual puedes usar HttpContext.Current o todavía mejor obtenerlo a partir del ControllerContext que tienen todos los controladores.

    De cara a como autenticar el usuario, de nuevo el framework te lo da casi todo hecho: no debes crear y establecer tu la cookie, sinó que una vez sabes que tu usuario se ha autenticado correctamente (eso se delega en un objeto que se llama Membership Provider, pero que no es más que la clase que accede a la bbdd y mira el login / pwd del usuario) se usa el método SetAuthCookie de la clase FormsAuthentication para que cree esa cookie (http://msdn.microsoft.com/es-es/library/system.web.security.formsauthentication.setauthcookie(v=vs.80).aspx).

    Si miras el código fuente del controlador AccountController en una aplicación ASP.NET MVC nueva, verás precisamente la llamada a esa función.

    Saludos!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis
    Monday, May 23, 2011 6:17 AM