none
Evento Validated & ValueChanged en formulario asp RRS feed

  • Pregunta

  • engo cierta dudas con respecto a como se aplica los eventos en asp core, en c# tenia 2 metodos que usaba para la validación de una fecha y posteriormente obtener la edad.

    En mi metdo Validated aplicaba en sgte codigo.

    private void dtpFecNac_Validated(object sender, EventArgs e)
        {
            if (txtEdad.Text == "")
            {
                MessageBox.Show("Escoga la Fecha de Nacimiento del Paciente", "ERROR!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                dtpFecNac.Select();
            }
        }

    Y en el método ValueChanged aplicaba lo sgte.

     private void dtpFecNac_ValueChanged(object sender, EventArgs e)
        {
            try
            {
               
                DateTime nacimiento = dtpFecNac.Value; //Fecha de nacimiento
                int edad = DateTime.Today.AddTicks(-nacimiento.Ticks).Year - 1;
                txtEdad.Text = Convert.ToString(edad);
            }
            catch (ArgumentOutOfRangeException ex)
            {
                if (valifech == 1)
                {
                }
                else
                {
                    MessageBox.Show("No puede escoger una fecha mayor a la actual: " + ex.Message, "ERROR!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    dtpFecNac.Text = DateTime.Now.ToShortDateString();
                    //dtpFecNac.Select();
                }
            }
        }
    Ahora la pregunta que se viene a mi mente es la siguiente que métodos debo implementar para que el formulario realice las mismas acciones que realizaba en c#.

    De antemano agradezco su ayuda.

    sábado, 14 de agosto de 2021 15:38

Respuestas

  • [...] básicamente lo que trataba de preguntar es si estos eventos que realizaba o implementaba en c# en windows form, existe la manera de aplicarlo en asp net core mvc [...]

    No, si es MVC entonces no se usan eventos (ni estos ni ningunos otros). Es un paradigma de programación distinto, no está basado en eventos.

    Todavía puedes usar eventos en el lado cliente (no en lado servidor) si los escribes en javascript. Si solo es para validar el contenido de los campos, y no requieres para ello ninguna información que cambie dinámicamente en el servidor, entonces se puede hacer perfectamente con eventos de javascript sin requerir nada de AJAX. Es más, en algunos casos de validaciones simples, puedes configurarlas en lado servidor decorando con atributos el Modelo (la M de MVC) y entonces la infraestructura de MVC lo traduce automáticamente a javascript sin que tengas que programarlo a mano. Se pueden validar de esta manera cosas tales como rangos de valores (valor mínimo y máximo) o campos obligatorios (para que no se puedan dejar en blanco). Para cosas más complicadas, tales como calcular una edad, entonces sí que tendrías que escribir algo de javascript.

    domingo, 15 de agosto de 2021 7:55

Todas las respuestas

  • A ver, lo de "en C#" no significa nada a estos efectos. Tienes C# tanto en aplicaciones de escritorio como en aplicaciones ASP.NET, tanto si son Core como si no son Core (en ambos casos), así que eso no nos dice nada.

    Creo que lo que querías decir es que usabas esos eventos en una aplicación de escritorio (Windows Forms, a juzgar por la signatura del evento), y ahora los quieres usar en una aplicación Web ASP.NET (presumiblemente Webforms, porque si fuera ASP.NET MVC no estaríamos hablando de eventos).

    Bien, en ese caso la respuesta es que esos eventos de servidor ya no se pueden utilizar en este tipo de aplicación, o al menos no en la misma manera que en la aplicación de escritorio. Y hay una buena razón para ello: esos eventos corresponden a código que se ejecuta en el servidor web. Pero el usuario puede estar ejecutando la aplicación en un navegador a miles de kilómetros de distancia, usando una conexión relativamente lenta. Cuando abandonas un control (que es lo que dispararía el evento Validated) o le cambias el valor (evento Changed), en el servidor no se detecta nada en absoluto, porque solo lo puede detectar si se le transmite algo por la línea de comunicación, pero el navegador no envía nada en el momento de abandonar o cambiar un control. Así pues, el servidor no tiene ninguna forma de saber que tiene que disparar un evento.

    Sí que se pueden usar eventos similares si los implementas en javascript para que se ejecuten en el navegador, y esos eventos podrían usar AJAX para enviar comandos al servidor si es que lo necesitas. Pero todo esto tendrías que programarlo en javascript, no se puede hacer con código servidor.

    sábado, 14 de agosto de 2021 15:57
  • A ver, lo de "en C#" no significa nada a estos efectos. Tienes C# tanto en aplicaciones de escritorio como en aplicaciones ASP.NET, tanto si son Core como si no son Core (en ambos casos), así que eso no nos dice nada.

    Creo que lo que querías decir es que usabas esos eventos en una aplicación de escritorio (Windows Forms, a juzgar por la signatura del evento), y ahora los quieres usar en una aplicación Web ASP.NET (presumiblemente Webforms, porque si fuera ASP.NET MVC no estaríamos hablando de eventos).

    Bien, en ese caso la respuesta es que esos eventos de servidor ya no se pueden utilizar en este tipo de aplicación, o al menos no en la misma manera que en la aplicación de escritorio. Y hay una buena razón para ello: esos eventos corresponden a código que se ejecuta en el servidor web. Pero el usuario puede estar ejecutando la aplicación en un navegador a miles de kilómetros de distancia, usando una conexión relativamente lenta. Cuando abandonas un control (que es lo que dispararía el evento Validated) o le cambias el valor (evento Changed), en el servidor no se detecta nada en absoluto, porque solo lo puede detectar si se le transmite algo por la línea de comunicación, pero el navegador no envía nada en el momento de abandonar o cambiar un control. Así pues, el servidor no tiene ninguna forma de saber que tiene que disparar un evento.

    Sí que se pueden usar eventos similares si los implementas en javascript para que se ejecuten en el navegador, y esos eventos podrían usar AJAX para enviar comandos al servidor si es que lo necesitas. Pero todo esto tendrías que programarlo en javascript, no se puede hacer con código servidor.

    Buen día, básicamente lo que trataba de preguntar es si estos eventos que realizaba o implementaba en c# en windows form, existe la manera de aplicarlo en asp net core mvc de la misma manera o tengo que realizar validaciones como tu indicas java script que me realice lo que se visualiza en esos metodos.
    sábado, 14 de agosto de 2021 16:07
  • [...] básicamente lo que trataba de preguntar es si estos eventos que realizaba o implementaba en c# en windows form, existe la manera de aplicarlo en asp net core mvc [...]

    No, si es MVC entonces no se usan eventos (ni estos ni ningunos otros). Es un paradigma de programación distinto, no está basado en eventos.

    Todavía puedes usar eventos en el lado cliente (no en lado servidor) si los escribes en javascript. Si solo es para validar el contenido de los campos, y no requieres para ello ninguna información que cambie dinámicamente en el servidor, entonces se puede hacer perfectamente con eventos de javascript sin requerir nada de AJAX. Es más, en algunos casos de validaciones simples, puedes configurarlas en lado servidor decorando con atributos el Modelo (la M de MVC) y entonces la infraestructura de MVC lo traduce automáticamente a javascript sin que tengas que programarlo a mano. Se pueden validar de esta manera cosas tales como rangos de valores (valor mínimo y máximo) o campos obligatorios (para que no se puedan dejar en blanco). Para cosas más complicadas, tales como calcular una edad, entonces sí que tendrías que escribir algo de javascript.

    domingo, 15 de agosto de 2021 7:55
  • Hola Roberto,

    ¿Alguna novedad sobre la consulta realizada?

    ¿Ha sido útil la respuesta brindada por Alberto?

    Gracias por usar los foros de MSDN.

    Eric Ruiz

    ____________________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.

    lunes, 16 de agosto de 2021 16:24
    Moderador