无法让 StateHasChanged 更新 @if 语句
Trouble getting StateHasChanged to update an @if Statement
所以我无法让我的 Razor 页面更新 if 语句。
想法是当用户选择一个按钮时,它会重新计算字符串以查找有多少个 X 值,现在我们正在查找 spaces。如果有一个 space,我希望输入字段被锁定(用户没有理由编辑它)。如果超过一个space,则解锁。
下面是包含标签的 if 语句
@if (NumOfSelectedValue <= 1)
{
<input class="form-control-sm" value="1" style="width: 40px" disabled />
}
else if (NumOfSelectedValue > 1)
{
<input class="form-control-sm" value="@NumOfSelectedValue" style="width: 40px" />
}
这是我认为它会如何更新的逻辑。
public void SpaceSelected() //ive used "async task"
{
int NumOfSelectedValue = SelectedCell.Count(x => x == ' ');//counting how many spaces there are with Linq
Console.WriteLine(NumOfSelectedValue);//post num of spaces in the console
//other versions ive used
//StateHasChanged();//update the if statement
//await InvokeAsync(StateHasChanged);
InvokeAsync(StateHasChanged);
}
根据您的评论,您有一个名为 NumOfSelectedValue
的 public 属性。这与您在 SpaceSelected
中定义的 局部变量 NumOfSelectedValue
是分开的。您的解决方案是不声明该局部变量,而只是更新 属性:
public void SpaceSelected()
{
NumOfSelectedValue = SelectedCell.Count(x => x == ' ');
StateHasChanged(); // Probably not necessary unless you're calling this method in the background
}
请注意,赋值前不再有 int
部分,这是声明变量的部分。
所以我无法让我的 Razor 页面更新 if 语句。
想法是当用户选择一个按钮时,它会重新计算字符串以查找有多少个 X 值,现在我们正在查找 spaces。如果有一个 space,我希望输入字段被锁定(用户没有理由编辑它)。如果超过一个space,则解锁。
下面是包含标签的 if 语句
@if (NumOfSelectedValue <= 1)
{
<input class="form-control-sm" value="1" style="width: 40px" disabled />
}
else if (NumOfSelectedValue > 1)
{
<input class="form-control-sm" value="@NumOfSelectedValue" style="width: 40px" />
}
这是我认为它会如何更新的逻辑。
public void SpaceSelected() //ive used "async task"
{
int NumOfSelectedValue = SelectedCell.Count(x => x == ' ');//counting how many spaces there are with Linq
Console.WriteLine(NumOfSelectedValue);//post num of spaces in the console
//other versions ive used
//StateHasChanged();//update the if statement
//await InvokeAsync(StateHasChanged);
InvokeAsync(StateHasChanged);
}
根据您的评论,您有一个名为 NumOfSelectedValue
的 public 属性。这与您在 SpaceSelected
中定义的 局部变量 NumOfSelectedValue
是分开的。您的解决方案是不声明该局部变量,而只是更新 属性:
public void SpaceSelected()
{
NumOfSelectedValue = SelectedCell.Count(x => x == ' ');
StateHasChanged(); // Probably not necessary unless you're calling this method in the background
}
请注意,赋值前不再有 int
部分,这是声明变量的部分。