es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

llamando al método del controlador utilizando jQuery pero el método no redirige a su vista correspondiente.

Tengo una página llamada “GetData.cshtml” donde necesito completar algunos datos de cuadro de texto y enviarlos al método del controlador. Estoy utilizando jQuery para enviar los datos al método del controlador.

Cuando depuro la aplicación, el método del controlador es llamado con éxito.

Como requerimiento, quiero mostrar los datos en la página “Registration_card.cshtml”, pero no se redirige a la página. El mensaje de la consola “console.log(“job done….”);” en el bloque de jQuery se muestra. Esto significa que la página vuelve a ser “GetData.cshtml”. ¿Es debido a que estoy utilizando jQuery para llamar al método del controlador? ¿Cómo puedo ir a la página “Registration_card.cshtml” después de llamar al método del controlador “Registration_card” a través de jQuery?

También intenté con el siguiente código, pero tampoco funciona.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema aquí es que estás realizando una llamada AJAX utilizando el método $.post de jQuery, el cual envía datos al método del controlador sin redirigir realmente a una nueva página. En su lugar, debes manejar la respuesta del método del controlador y redirigir a la página Registration_card.cshtml utilizando JavaScript.

    Puedes modificar el bloque de jQuery para manejar la respuesta agregando una función de callback al método $.post:

    $(document).ready(function () {
        $('#btn_sbmt_recommendation').click(function () {            
            $.post("/RegistrationModels/Registration_card",
            {
                firm_id: $('#id_reg_id').val(), 
                amount: $('#id_amount').val()
            },
            function(data, status) {
                // Manejar la respuesta del método del controlador
                window.location.href = "/RegistrationModels/Registration_card";
                // o usar window.location.replace para evitar problemas con el botón de retroceso
                // window.location.replace("/RegistrationModels/Registration_card");
            });
        });
    })
    

    Aquí, la función de callback toma dos argumentos: data y status. Puedes utilizar data para manejar cualquier dato de respuesta devuelto por el método del controlador. En este caso, simplemente queremos redirigir a la página Registration_card.cshtml utilizando window.location.href.

    Alternativamente, puedes usar window.location.replace para evitar problemas con el botón de retroceso del navegador.

    En tu código del controlador, puedes retornar la Vista Registration_card.cshtml directamente o utilizar RedirectToAction para lograr el mismo resultado:

    public ActionResult Registration_card(string firm_id, string ward_calani_num, string amount)
    {
        try
        {
            // bloque de código
    
            // Opción 1: retornar la Vista directamente
            return View("Registration_card", updated_firm);
    
            // Opción 2: utilizar RedirectToAction
            // return RedirectToAction("Registration_card");
        }
        catch (Exception ex) 
        { 
            throw; 
        }
    }
    

    La Opción 1 retorna la Vista Registration_card.cshtml directamente, mientras que la Opción 2 utiliza RedirectToAction para volver a la misma acción del método (en este caso, Registration_card) y permitir que el framework maneje la lógica de redirección.

Comments are closed.