C# Blazor Textarea在变量更改时更新
我希望文本区域始终显示变量的值。但它只有在我点击按钮时才会更新。每次变量更改时,我如何更新textareaC# Blazor Textarea在变量更改时更新,c#,blazor,C#,Blazor,我希望文本区域始终显示变量的值。但它只有在我点击按钮时才会更新。每次变量更改时,我如何更新textarea <button class="btn btn-primary" @onclick="Test">Test</button> <textarea type="text" name="configJson" id="configJson" value="
<button class="btn btn-primary" @onclick="Test">Test</button>
<textarea type="text" name="configJson" id="configJson" value="@inputString" rows="20" cols="50" />
@code {
private string inputString;
private void Test()
{
inputString = inputString;
}
}
我有代码,不断地改变变量,但它不更新textarea。只有单击按钮,文本区域才会更新。我做错了什么?
提前谢谢 您需要的是ComponentBase类的StateHasChanged方法。
这告诉Blazor数据绑定(包括单向绑定)需要更新。
顺便问一下,为什么要使用textarea元素的value属性?你应该设置它的内容。它不是输入。请参见下面的示例:
@页面/
@正文
@代码{
公共字符串文本{get;set;}
int计数器{get;set;}
已初始化受保护的覆盖无效{
碱基化;
var timer=新System.Timers.Timer1000;
timer.appead+=s,e=>{
计数器++;
InvokeAsync=>{
Text=$Tick{Counter};
国家发生了变化;
};
};
定时器。启动;
}
}
您需要的是ComponentBase类的StateHasChanged方法。
这告诉Blazor数据绑定(包括单向绑定)需要更新。
顺便问一下,为什么要使用textarea元素的value属性?你应该设置它的内容。它不是输入。请参见下面的示例:
@页面/
@正文
@代码{
公共字符串文本{get;set;}
int计数器{get;set;}
已初始化受保护的覆盖无效{
碱基化;
var timer=新System.Timers.Timer1000;
timer.appead+=s,e=>{
计数器++;
InvokeAsync=>{
Text=$Tick{Counter};
国家发生了变化;
};
};
定时器。启动;
}
}
谢谢,这就是我所需要知道的一切=工作起来很有魅力。使用value属性而不是textarea的内容没有错。它是直观的,与其他输入元素一致,并且工作得非常好。我是布拉佐。这不是Html。甚至表单InputTextArea组件也绑定到value属性,而不是绑定到content->@enet:如果这与HTML的行为不同,则不一致。我知道,像InputText这样的内置Blazor组件可以而且应该表现不同——这是意料之中的。我们知道它们不是HTML元素。事实上,它们是由不同部分组成的组件,顾名思义。当您将隐含的、不明显的界面隐藏在一个常见的、众所周知的HTML元素名称下时——这只是一个糟糕的设计,它会导致混乱和错误。谢谢您,这就是我所需要知道的一切=非常有魅力。使用value属性而不是textarea的内容没有错。它是直观的,与其他输入元素一致,并且工作得非常好。我是布拉佐。这不是Html。甚至表单InputTextArea组件也绑定到value属性,而不是绑定到content->@enet:如果这与HTML的行为不同,则不一致。我知道,像InputText这样的内置Blazor组件可以而且应该表现不同——这是意料之中的。我们知道它们不是HTML元素。事实上,它们是由不同部分组成的组件,顾名思义。当您将隐含的、不明显的接口隐藏在一个常见的、众所周知的HTML元素名称下时——这只是一个糟糕的设计,它将导致混乱和错误。