Как обновить значение текстовой области (ASP.NET Основной MVC)

0

Вопрос

Чтобы все было просто:

Это мой класс обслуживания:

public class ServiceClass
{
        public string Request {get; set;}
        //other logic
        
        private void ExecuteCommand()
        {
            Request = "Some Text";
        }

}

Мой домашний контролер:

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();
        }

        
}

У меня есть модель ServiceClassModel:

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

}

И у меня есть представление индекса с текстовой областью:

<textarea id="story" name="story"
              rows="9" cols="80" style="margin-left: 10px; resize: none; margin-top: 10px">Here I want to update the text

Теперь к моему вопросу: я запрограммировал приложение для распознавания речи. Существует свойство под названием Запрос, в котором мой речевой запрос хранится в классе обслуживания. Я хочу каждый раз, когда метод ExecuteCommand(); вызывается для обновления текстовой области в представлении индекса. Каков наилучший способ сделать это?

Использование ASP.NET Основной MVC

asp.net-core c# html javascript
2021-11-23 21:08:21
1

Лучший ответ

0

Вы будете получать ответ каждый раз, когда будет сделан запрос. Но если команда ExecuteCommand() запускается из другой службы, текущее значение запроса не будет выведено на передний план до тех пор, пока не будет сделан новый запрос.

Если запрос вызывает команду ExecuteCommand, этот пример может сработать: https://dotnetfiddle.net/5mVvb9

Если нет, я предлагаю вам использовать обычный опрос. При таком подходе вы можете сделать периокальный запрос на серверную часть и проверить наличие нового значения запроса.

2021-11-23 21:54:52

Хорошо, спасибо вам за быстрый ответ на мой вопрос. Просто чтобы убедиться, что вы меня правильно поняли: ExecuteCommand(); вызывается, когда произносится ключевое слово распознавания (например, "Привет, Google"), а затем генерируется ответ на мой запрос. Я хочу, чтобы ответ и мой речевой запрос отображались в поле без нажатия кнопки. Является ли регулярный опрос единственным способом? Если да, не могли бы вы привести мне более конкретный пример для моего кода. Большое вам спасибо!
DarthYoda

Единственный способ предотвратить регулярный опрос-это отправить запрос на публикацию с устным звуком на серверную часть. Я думаю, что будет служба, обрабатывающая этот звук и возвращающая строковый ответ, который вы хотите отобразить в текстовой области. Если полный процесс завершается одним запросом до 10 секунд, то нет необходимости проводить опрос. В противном случае, если процесс занимает больше времени или вам нужен другой фоновый процесс для работы со звуком, вам понадобится стратегия опроса. В первом случае вам просто нужно будет отправить аудио на серверную часть и записать ответ de string для заполнения текстовой области.
punteriaCero

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................