Текстовая область не реагирует на изменения после ручного редактирования

#c# #blazor #blazor-client-side

#c# #blazor #blazor-на стороне клиента

Вопрос:

Этот небольшой пример иллюстрирует это. Вы нажимаете кнопку, страница изменяет как текстовую область, так и ввод, но если вы вручную что-то измените в текстовой области, она перестанет обновлять свое содержимое при повторном нажатии. Как вы решаете эту проблему, чтобы она всегда менялась из кода?

 @page "/TextAreaTest"
<h3>TextArea Test</h3>
<textarea>@textContent</textarea>
<br />
<input type="text" value="@textContent" />
<br /><br />
<input type="button" value="Change It" @onclick="ChangeIt" />

@code {
    string textContent = "now...";

    void ChangeIt() =>
        textContent = $"{DateTime.Now:HH:mm:ss.fff}";
}
 

Комментарии:

1. Я не могу воспроизвести ошибку. Ваш пример работает нормально. Не могли бы вы попробовать добавить await InvokeAsync(StateHasChanged); к своему методу и проверить, работает ли он? Итак, метод выглядит так async Task ChangeIt() { textContent = $"{DateTime.Now:HH:mm:ss.fff}"; await InvokeAsync(StateHasChanged); }

Ответ №1:

Используйте значение или @bind

 <textarea value="@textContent"></textarea>
// or
<textarea @bind="textContent"></textarea>