none
Mostrar el mensaje de error en un alert RRS feed

  • Pregunta

  • Buen día:

    Tengo esta validación en el modelo

     

            [DataType(DataType.Date)]

            [RegularExpression(@"^\d{1,2}\/\d{1,2}\/\d{4}$", ErrorMessage = "Fill in a valid date.")]

            public DateTime BIRTHDATE { get; set; }

     

     

    Con la validación todo bien, me aparece el mensaje configurado en ErrorMessage al digitar en el textbox un formato de fecha no válido, pero lo que quisiera preguntarles es si el mensaje es posible mostrarlo en un alert y no a la par del textbox ? ya que al salir el mensaje dicho mensaje me mueve los otros textboxs

    gracias por su ayuda desinteresada...

    JorDiz


    JorDiz
    • Editado JorDiz sábado, 12 de noviembre de 2011 5:36 Replanteamiento
    sábado, 12 de noviembre de 2011 5:07

Respuestas

  • Buenas!

    Yo no te recomiendo un alert, es muy intrusivo y muy molesto para el usuario. El que se te muevan los otros textboxs al salir el mensaje es por el diseño HTML que estás usando.

    Bueno, de todos modos si quieres mostrar un alert con el error, podrías usar algo parecido a:

    <script type="text/javascript">
    function showErrors()
    {
       var error = "";
       @foreach (ModelState mstate in ViewData.ModelState.Values) {
             foreach (ModelError merror in mstate.Errors) {
                  <text>error = error + @merror.ErrorMessage + "\n";</text>
                  }
           }  
          if (error != "") alert(error);  
    }
    
    </script>
    

    No he podido probar el código (así que al igual hay algún error) pero por ahí andaría. Esta función javascript te mostraria todos los errores que hay en el modelo. Los errores los tienes en ViewData.ModelState. Allí tienes una colección de entradas (de tipo ModelState) cada una de las cuales tiene 0 o más errores de tipo ModelError.

    La idea de esa función es consultar con Razor todos los errores e ir concatenando una cadena javascript y mostrarla al final con alert.

    Por supuesto tienes que llamar a esa función al cargar la vista con $(document).ready(function() { showErrors();});

    Saludos!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis
    • Marcado como respuesta JorDiz lunes, 14 de noviembre de 2011 15:40
    lunes, 14 de noviembre de 2011 7:32

Todas las respuestas

  • Buenas!

    Yo no te recomiendo un alert, es muy intrusivo y muy molesto para el usuario. El que se te muevan los otros textboxs al salir el mensaje es por el diseño HTML que estás usando.

    Bueno, de todos modos si quieres mostrar un alert con el error, podrías usar algo parecido a:

    <script type="text/javascript">
    function showErrors()
    {
       var error = "";
       @foreach (ModelState mstate in ViewData.ModelState.Values) {
             foreach (ModelError merror in mstate.Errors) {
                  <text>error = error + @merror.ErrorMessage + "\n";</text>
                  }
           }  
          if (error != "") alert(error);  
    }
    
    </script>
    

    No he podido probar el código (así que al igual hay algún error) pero por ahí andaría. Esta función javascript te mostraria todos los errores que hay en el modelo. Los errores los tienes en ViewData.ModelState. Allí tienes una colección de entradas (de tipo ModelState) cada una de las cuales tiene 0 o más errores de tipo ModelError.

    La idea de esa función es consultar con Razor todos los errores e ir concatenando una cadena javascript y mostrarla al final con alert.

    Por supuesto tienes que llamar a esa función al cargar la vista con $(document).ready(function() { showErrors();});

    Saludos!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis
    • Marcado como respuesta JorDiz lunes, 14 de noviembre de 2011 15:40
    lunes, 14 de noviembre de 2011 7:32
  • gracias Eduard probaré el código aunque la verdad tienes razón los messagebox son un poco molestos al usuario.

     

    Saludos,

     


    JorDiz
    lunes, 14 de noviembre de 2011 15:39