none
cambiar propiedad "Type" de un formulario con asp RRS feed

  • Pregunta

  • Hola amigos, necesito ayuda!!

    Estoy queriendo hacer algo parecido a lo que tiene hotmail en la pagina de inicio de sesion.
    Quiero tener un chekbox para poder seleccionar si quiero o no que se recuerde mi usuario en la computadora.
    Supongo que será con cookies, porque yo estoy intentando con eso. El problema es que cuando alguien selecciona que quiere recordar su usuario, la proxima vez que ingresa, tiene ya el usuario ingresado (recordado), pero le sigue apareciendo el checkbox con la misma pregunta.
    Quiero hacer que el checkbox cambie su propiedad "Type" a "hidden" cuando la cookie ya existe.
    Alguien sabe como puedo cambiar la propiedad Type desde algun script.

    Muchas gracias!!!
    viernes, 27 de febrero de 2009 19:01

Respuestas

  • Hola,

    aahh ok, jeje si ultimamente sino se clara uno da por supuesto que se trata de asp.net.

    en este casoe s ams simple entonces, por ejemplo puede hacer algo como ser:

    <table> 
            
    <
    Dim recordar 
    recordarRequest.Cookies("Recordar") 
     
    ' o sea si el checkbox de dejar de recordar no vienen en la coleccion de forms, la opcion de la coockie 
    if Request.Form(element).Count <> 0 then 
        if request.Form("dejarrecordar") = checked the 
            recordar = false 
            Response.Cookies("Recordar") = false 
        end if 
    end if 
     
    if recordar then 
    %> 
        'aqui iria el row del html que contiene al checkbox 
        <tr><td><input type=checkbox name=recordar></tr></td
    <% end if%> 
     
    <tr><td><input type=checkbox name=dejarrecordar javascript="Post();"></tr></td
     
    </table> 


    O sea simplemente con el if de asp renderizas o no toda la region que contiene al checkbox para enviarlo al cliente o no.

    Te comento este codigo lo escribi directamente en el post, no se si esta del todo bien, solo intenta darte una pista a una posible solucion, puede que tenga errores.

    De esta forma no necesitas usar javascript, pero si necesitas hacer un post al servidor ante un cambio en el segundo check de dejar de recordar.

    Si quieres tambien puedes implementar una solucion en conjunto usando asp, y javascript, o sea usar parte del codigo que ves aqui y parte de los link que envie en donde explica como ocultar y visualizar usando codigo del lado del cliente.

    Bueno espero esto ayude un poco mas
    Saludos

    Leandro Tuttini
    • Marcado como respuesta Luispa sábado, 28 de febrero de 2009 21:57
    sábado, 28 de febrero de 2009 15:32

Todas las respuestas

  • Hola,

    Si quieres manipularlo desde javascript puedes hacerlo de esta forma:

    <SCRIPT Language="JavaScript"
    function showElement(toggle) { 
     if (toggle == 'on'document.theForm.theCheckBox.style.visibility = 
    'visible'
     if (toggle == 'off'document.theForm.theCheckBox.style.visibility = 
    'hidden'
    </SCRIPT> 
    <FORM name="theForm"
    <input type="checkbox"  style="visibility:hidden" name="theCheckBox"
    <P> 
    <A HREF="javascript:showElement('on')">show checkbox</A> 
    <A HREF="javascript:showElement('off')">hide checkbox</A> 
    </FORM> 
     
     

     

    Pero ten en cuenta que las cookies tu puedes leerlas desde el lado del servidor, por lo que podrias deshabilitar el control desde codigo c#.

    Salvo que el control checkbox, no tenga la propiedad runat=server, o sea es solo html, ahi si solo puede ocultarlo desde javascript

    Saludos


    Leandro Tuttini
    • Marcado como respuesta Luispa viernes, 27 de febrero de 2009 21:47
    • Desmarcado como respuesta Luispa viernes, 27 de febrero de 2009 22:17
    viernes, 27 de febrero de 2009 21:38
  • Leo,

    Muchísimas gracias por tu respuesta, la verdad que nunca pense que me responderian tan rapido.

    Tu ejemplo me sirve, pero ahora no se como ocultar la etiqueta del checkbox.

    Si podes, me explicarias mejor lo que me queres decir al ultimo de tu mensaje, porque no comprendo bien a que te referis?

    la mia es una pagina asp con un formulario para registrarse, pero no le puse en ningun lado Runat=Server.

    Yo quiero hacer lo mismo que tienen los formularios de inicio de sesion de microsoft y a lo mejor no es con cookies.

    Si se te ocurre otra forma te pido que me ayudes.

    Muchas gracias de nuevo por tu ayuda.

    un abrazo!!

     

    Luispa

     

    viernes, 27 de febrero de 2009 22:10
  • Hola,

     Para aclararte lo del runat=server, te comento.

    Recuerda que en asp.net puede tener tres clases de controles en tus formularios:

    - los html comunes, o sea esos son los normales de una paginas web, los manipulas como conoces, pero no desde codigo c#, (o sea el codebehind) no podras acceder a las propiedades del mismo, ni a sus eventos.

    - los controles html con el agregado del atributo runat=server, este se lo puedes agregas vos a mano en el codigo html, o si te posicionas en el control tendras la opcion para convertirlo para que corra como parte del servidor. Estos usan clases especiales y podras accederlos o codificar sus propiedades desde c# y controlar sus eventos.

    - y por ultimo tienen los controles web de asp.net, que estos son loas mas ricos para el desarrollo, son los que tienes en la toolbox. Estos siempre podran ser utilizados desde el codebehind.

     
    Bien ahi tienes la aclaracion de los de runat=server, o sea habilitas un control normal de html, para poder ser usado desde c#, o vb.net, es indistinto.

    Aqui una excelente explicacion: Cómo: Agregar controles de servidor HTML a una página Web mediante la sintaxis de ASP.NET

    Información general sobre los controles de servidor Web ASP.NET

     

    Para ocultar la etiqueta podras proceder de la misma forma que para el checkbox, o creo que todos los controles o la mayoria al menos tienen la propiedad style.visibility.

    por lo que si haces: document.theForm.<control a ocultar>.style.visibility = 'hidden'; deberia funcionar, debes reemplazar la parte entre <..> por el nombre del controls.

    Igualmente si lo que quieres es ocultarlo en bloque, y si el diseño de la pagina esta en tablas, puedes ocultar la fila de la tabla direactamente.

    Aqui un excelente ejemplo de como hacerlo: How to hide table row?

    Es mas, en el ejemplo veras las dos tecnicas aplicadas.

    Veras como le agrega a la fila de la tabla el atributo runat=server y como le pone un id, para luego poder usarlo desde codigo c#
    Y tambien veras como hace uso de javascript para ocultar las filas.

    Las dos son validad, dependera de lo que quieras lograr.

    La verdad nunca me puse a analizar como es que hotmail realiza las autenticaciones, o sea si solo quieres guardar la info de loguin del usuario, seguramente las cookies esten correctas, o sea alli guardaras los valores de los campos, excepto el del password por supuesto.

     
    Ahora si lo que intentas copiar es todo el sistemas de autenticacion, seguramente tendras que ver temas como  System.Security.Principal

     Aqui tienes mas info al respecto, es un tema muy interesante, pero se que puede se complejo si se quiere hacer bien.

    Administrar usuarios mediante suscripciones

     

    Bueno espero te sea util esta info.

    Saludos


    Leandro Tuttini
    • Marcado como respuesta Luispa sábado, 28 de febrero de 2009 0:52
    • Desmarcado como respuesta Luispa sábado, 28 de febrero de 2009 14:36
    viernes, 27 de febrero de 2009 23:30
  • Leo,
    Mil gracias por tu excelente explicacion!!!!

    La verdad, me dejas sin palabras, se ve que sabes mucho.

    Tu ayuda me sirvio no solo para lo que quiero hacer, tambien aprendi mucho más!!

    un gran abrazo!!

    Luispa

    sábado, 28 de febrero de 2009 0:55
  • Leo,

    La verdad, pensaba que tenia la solucion en tu respuesta, pero lamentablemente no.
    Lo que pasa es que todas tus explicaciones son para asp.net y yo estoy desarrollando mi pagina en asp.

    Si me pueden ayudar, tengo 2 checkbox, uno para recordar usuario y otro para dejar de recordar el usuario.

    Lo que quiero hacer es que la primera vez que entra un usuario, le aparezcan los 2 checkbox, pero al seleccionar recorda usuario, la proxima vez que ingrese, se complete automaticamente el usuario con la cookie creada y " no se muestre el checkbox de recordar usuario", solo el de "dejar de recordar.

    Espero que alguien me entienda.

    Gracias!!!

    Luispa
    sábado, 28 de febrero de 2009 14:43
  • Hola,

    aahh ok, jeje si ultimamente sino se clara uno da por supuesto que se trata de asp.net.

    en este casoe s ams simple entonces, por ejemplo puede hacer algo como ser:

    <table> 
            
    <
    Dim recordar 
    recordarRequest.Cookies("Recordar") 
     
    ' o sea si el checkbox de dejar de recordar no vienen en la coleccion de forms, la opcion de la coockie 
    if Request.Form(element).Count <> 0 then 
        if request.Form("dejarrecordar") = checked the 
            recordar = false 
            Response.Cookies("Recordar") = false 
        end if 
    end if 
     
    if recordar then 
    %> 
        'aqui iria el row del html que contiene al checkbox 
        <tr><td><input type=checkbox name=recordar></tr></td
    <% end if%> 
     
    <tr><td><input type=checkbox name=dejarrecordar javascript="Post();"></tr></td
     
    </table> 


    O sea simplemente con el if de asp renderizas o no toda la region que contiene al checkbox para enviarlo al cliente o no.

    Te comento este codigo lo escribi directamente en el post, no se si esta del todo bien, solo intenta darte una pista a una posible solucion, puede que tenga errores.

    De esta forma no necesitas usar javascript, pero si necesitas hacer un post al servidor ante un cambio en el segundo check de dejar de recordar.

    Si quieres tambien puedes implementar una solucion en conjunto usando asp, y javascript, o sea usar parte del codigo que ves aqui y parte de los link que envie en donde explica como ocultar y visualizar usando codigo del lado del cliente.

    Bueno espero esto ayude un poco mas
    Saludos

    Leandro Tuttini
    • Marcado como respuesta Luispa sábado, 28 de febrero de 2009 21:57
    sábado, 28 de febrero de 2009 15:32
  •  Leo,

    Ahora si te puedo decir que logre perfectamente lo que queria hacer.

    Te agradezco mucho todo lo que me ayudaste. Hasta aprendi ASP.NET con vos jajaja!!

    Te mando un abrazo.

    Muchas muchas gracias.
    sábado, 28 de febrero de 2009 22:00