如何更新文本区域的值(ASP.NET Core MVC)

Posted

技术标签:

【中文标题】如何更新文本区域的值(ASP.NET Core MVC)【英文标题】:How to update the value of a textarea (ASP.NET Core MVC) 【发布时间】:2022-01-02 08:32:36 【问题描述】:

为了简单起见:

这是我的服务类:

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 的 IndexView:

<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

现在我的问题是:我编写了一个语音识别应用程序。有一个名为 Request 的属性,我的语音请求存储在 ServiceClass 中。我希望每次调用 ExecuteCommand(); 方法来更新索引视图中的文本区域。最好的方法是什么?

使用 ASP.NET Core MVC

【问题讨论】:

在哪里调用ExecuteCommand 方法? 该方法是从名为 PressButton 的 ServiceClass 中的另一个方法调用的,该方法是从 Homecontroller 调用的。此外,它被名为 EcecuteSpeechCommand 的 ServiceClass 中的另一个方法调用,该方法不是由 HomeController 调用的 【参考方案1】:

每次提出请求时,您都会得到响应。但是如果 ExecuteCommand() 从另一个服务触发,当前请求值不会被推送到 FRONT,直到发出新请求。

如果请求是触发 ExecuteCommand 的请求,则此示例可以工作:https://dotnetfiddle.net/5mVvb9

如果没有,我建议你使用 Regular Polling。使用这种方法,您可以向 BACKEND 发出 periocal 请求并检查新的 Request 值。

【讨论】:

好的,感谢您快速回答我的问题。只是为了确保您理解正确:ExecuteCommand();当说出识别的关键字(如“Hey Google”)时调用,然后生成我的请求的答案。我希望在不单击按钮的情况下将答案和我的演讲请求显示在框中。定期轮询是唯一的方法吗?如果是的话,你能给我一个更具体的例子来说明我的代码。非常感谢! 防止定期轮询的唯一方法是向后端发出带有语音音频的 POST 请求。我认为会有一项服务处理该音频并返回您希望在文本区域中显示的字符串响应。如果整个过程在 10 秒之前在单个请求中完成,则无需进行轮询。否则,如果该过程需要更多时间,或者如果您需要另一个后台进程来处理音频,那么您将需要一个轮询策略。在第一种情况下,您只需将音频发布到后端并捕获字符串响应以填充 textarea。

以上是关于如何更新文本区域的值(ASP.NET Core MVC)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 HTML 表单中“预填充”文本区域的值? [复制]

Asp.Net Core - 在文本区域中显示字符串列表值?

在下拉选择中更改文本区域的值

如何通过 ASP.NET 中的 javascript 访问 textarea 的值?

如何让突变观察者检测文本区域的值变化?

获取动态生成的文本区域的值