none
ValidationSummary se activa con varios botones RRS feed

  • Pregunta

  • Buenos días, estoy aprendiendo a programar en Asp.Net , tengo una duda y espero me puedan ayudar. Tengo una página que usa un MasterPage como marco, el tema es que los campos obligatorios están validados del lado del cliente y las alertas se muestran en un Validation Summary. Lo normal es que dichas validaciones se disparen al hacer click en el boton Confirmar al final del formulario, sin embargo tengo un botón de Logueo en el MasterPage, al cual al hacerle click también dispara las validaciones y los textos en el Validation Summary. Leí en algunos post que era posible evitar este problema cambiando la propiedad CausesValidation a "false" del botón LogIn, sin embargo no ha sido de mucha ayuda dicho cambio. Espero su ayuda y comentarios. Les dejo el codigo de los botones y del Validation Summary: Código html del botón LogIn en el MasterPage:

    <div class="span3 customer_service">
    <%--<h4>FREE delivery on ALL orders</h4>
    <h4><small>Customer service: 0800 8475 548</small></h4>--%>
                            <div class="auth">
                                <span id="authGreeting" runat="server"><%: GetGreeting() %></span>
                                <span><%=CreateChangePasswordLinkHtml() %></span>
                                <button  causesvalidation="false" runat="server"  class="btn btn-primary btn-small search_btn"  id="authAction" name="authAction" value="auth"
                                    runat="server">
                                    Log In</button>
                            </div>

    Código en la página aspx:

    Código del validation summary:

      <div id="errors" data-valmsg-summary="true"  class="error">
                    <ul>
                        <li style="display: none"></li>
                    </ul>
                    <asp:ValidationSummary  ID="ValidationSummary1"  runat="server" CssClass="error" />
                </div>

    Código de un control:

                                            <div class="control-group">
                                                <label class="control-label">Nombres</label>
                                                <div class="controls docs-input-sizes">
                                                    <asp:TextBox runat="server" ID="txtNombre" type="text" class="span4" data-val="true" data-val-required="Ingrese su Nombre"></asp:TextBox>
                                                </div>

    Código del botón confirmación:

     <button type="submit" value="checkout"  runat="server" style="text-align: center;" class="btn btn-primary pull-right" name="btnCofirmarOrden" id="btnCofirmarOrden">Confirmar Orden</button>

    jueves, 19 de marzo de 2015 17:41

Respuestas

  • hola

    estas seguro que defines bien el boton ? porque por ejemplo el class no existe en el boton de asp.net sino que usarias CssClass

    tampoco existe el value, por eso esta el Text

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Moises.25 viernes, 20 de marzo de 2015 4:30
    jueves, 19 de marzo de 2015 19:04
  • también puedes establecer en tu botón la propiedad Button.ValidationGroup Propiedad

    para establecer un grupo de validación a tu botón de la master y únicamente realicé la validación de los controles con el mismo ValidationGroup


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    • Propuesto como respuesta Jose A. Fernandez jueves, 19 de marzo de 2015 20:06
    • Marcado como respuesta Moises.25 viernes, 20 de marzo de 2015 4:30
    jueves, 19 de marzo de 2015 19:30
    Moderador
  • Hola Moises.25

    Como te comenta Sergio Parra, puedes "agrupar" controles para que sean de un mismo grupo de validacion ... Y es la recomendacion para "esto de un solo form en ASP.NET"... (no tenemos escapatoria en webforms)
    Ejemplo claro:

    • que en una modulo de buscar (lado derecho o arriba de y Master) tiene un texbox y un boton... dicho boton solo debe validar la obligatoriedad del texto a buscar
    • Otro ejemplo es tu login

    Para eso tambien debes seterar (establecer) al ValidationSummary el valor del grupo en la propiedad ValidationGroup o sino las validaciones que mostrar seran de los controles que "no tienen asignado el grupo"
    Es decir los controles con ValidationGroup="" tambien son un grupo ;)

    En cambio si seteas que no cause validacion no disparara la validacion en cuyo caso no es la funcionalidad que estas necesitando

    Espero que te sirva ayuda o guia


    Jose. A Fernandez | blog: http://geeks.ms/blogs/fernandezja

    • Marcado como respuesta Moises.25 viernes, 20 de marzo de 2015 4:30
    jueves, 19 de marzo de 2015 20:13

Todas las respuestas

  • >>sin embargo tengo un botón de Logueo en el MasterPage, al cual al hacerle click también dispara las validaciones y los textos en el Validation Summary

    define la propiedad CausesValidation  =false en ese boton que tienes en la master

    porque defines un button de html con runat=server en lugar de usar un <asp:Button> ?

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina




    jueves, 19 de marzo de 2015 17:45
  • Hola Leandro, muchas gracias por tu ayuda, el tema es que hago los cambios que indicas, pero me sigue disparando la validación, ya no se que estoy haciendo mal:

                                <asp:button  CausesValidation="false" runat="server"  class="btn btn-primary btn-small search_btn"  id="authAction" name="authAction" value="auth" Text="Log In"/>

    

    jueves, 19 de marzo de 2015 18:53
  • hola

    estas seguro que defines bien el boton ? porque por ejemplo el class no existe en el boton de asp.net sino que usarias CssClass

    tampoco existe el value, por eso esta el Text

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Moises.25 viernes, 20 de marzo de 2015 4:30
    jueves, 19 de marzo de 2015 19:04
  • también puedes establecer en tu botón la propiedad Button.ValidationGroup Propiedad

    para establecer un grupo de validación a tu botón de la master y únicamente realicé la validación de los controles con el mismo ValidationGroup


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    • Propuesto como respuesta Jose A. Fernandez jueves, 19 de marzo de 2015 20:06
    • Marcado como respuesta Moises.25 viernes, 20 de marzo de 2015 4:30
    jueves, 19 de marzo de 2015 19:30
    Moderador
  • Hola Moises.25

    Como te comenta Sergio Parra, puedes "agrupar" controles para que sean de un mismo grupo de validacion ... Y es la recomendacion para "esto de un solo form en ASP.NET"... (no tenemos escapatoria en webforms)
    Ejemplo claro:

    • que en una modulo de buscar (lado derecho o arriba de y Master) tiene un texbox y un boton... dicho boton solo debe validar la obligatoriedad del texto a buscar
    • Otro ejemplo es tu login

    Para eso tambien debes seterar (establecer) al ValidationSummary el valor del grupo en la propiedad ValidationGroup o sino las validaciones que mostrar seran de los controles que "no tienen asignado el grupo"
    Es decir los controles con ValidationGroup="" tambien son un grupo ;)

    En cambio si seteas que no cause validacion no disparara la validacion en cuyo caso no es la funcionalidad que estas necesitando

    Espero que te sirva ayuda o guia


    Jose. A Fernandez | blog: http://geeks.ms/blogs/fernandezja

    • Marcado como respuesta Moises.25 viernes, 20 de marzo de 2015 4:30
    jueves, 19 de marzo de 2015 20:13