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.

Cómo actualizar el valor de un área de texto (ASP.NET Core MVC)

Para simplificar:

Esta es mi clase de servicio:

public class ServiceClass
{
        public string Request {get; set;}
        //otra lógica

    private void ExecuteCommand()
    {
        Request = "Algún texto";
    }
}

Mi Controlador de Inicio:

public class HomeController : Controller
{
    private readonly ILogger<homecontroller> _logger;

    [BindProperty]
    public ServiceClassModel ServiceClass { get; set; }

    public HomeController(ILogger<homecontroller> logger)
    {
        _logger = logger;
    }

    public IActionResult Index()
    {
        return View();
    }

    public IActionResult Privacy()
    {
        return View();
    }
}

Tengo un ServiceClassModel:

public class ServiceClassModel
{
    public string Request { get; set; }
    public string Response { get; set; }
    public ServiceClass Logic { get; set; }
}

Y tengo una vista de índice con un área de texto:

Ahora a mi pregunta: He programado una aplicación de reconocimiento de voz. Hay una propiedad llamada Request donde se almacena mi solicitud de voz en ServiceClass. Quiero que cada vez que se llame al método “ExecuteCommand();” se actualice el área de texto en la vista de índice. ¿Cuál es la mejor manera de hacerlo? Utilizando ASP.NET Core MVC.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Una forma de lograr esto es usando AJAX para enviar una solicitud a un método del controlador en el backend que actualiza el área de texto en el frontend.

    1. En su vista Index, agregue un id al elemento textarea:
      <textarea id="story" name="story" rows="9" cols="80" style="margin-left: 10px; resize: none; margin-top: 10px"></textarea>
      
    2. Cree un nuevo método del controlador que actualice la propiedad Request en su clase de servicio y devuelva el valor actualizado:
      [HttpPost]
      public IActionResult UpdateRequest(string newRequest)
      {
         ServiceClass.Logic.Request = newRequest;
         // otra lógica
         return Ok(ServiceClass.Logic.Request);
      }
      
    3. En su vista Index, agregue un script que envíe una solicitud AJAX al método UpdateRequest cada vez que se llame a ExecuteCommand():
      <script>
        //Obtener el elemento textarea
        var textarea = document.getElementById("story");
      
        //Definir la función para actualizar el textarea
        function updateTextarea(){
            //enviar una solicitud AJAX al método UpdateRequest
            $.ajax({
                type: "POST",
                url: "/Home/UpdateRequest",
                data: { "newRequest": ServiceClass.Logi.Request },
                success: function(response){
                    //actualizar el textarea con el nuevo valor de la propiedad Request
                    textarea.value = response;
                }
            });
        }
      
        //Llamar a la función updateTextarea() cada vez que se llame a ExecuteCommand()
        ServiceClass.Logic.ExecuteCommand = function(){
            ServiceClass.Logic.ExecuteCommand();
            updateTextarea();
        }
      </script>
      

    De esta manera, cada vez que se llama a ExecuteCommand(), también se llama a la función updateTextarea(), que envía una solicitud AJAX al backend para actualizar el área de texto en el frontend con el nuevo valor de la propiedad Request.

Comments are closed.