在下面的代码示例中,我已经在增量计数器演示中添加了逻辑以显示列表的内容,然后在on click事件中向列表添加了“新项”。但是,尝试添加时不添加...两个Console.WriteLine会在添加前后忠实地显示具有三个成员的列表,但是没有报告错误,并且列表没有任何变化。
示例代码:
@page "/ListIncrement"
<div>
<p>Current count: @currentCount</p>
<ul>
@foreach (var ListItem in TestList)
{
<li>@ListItem</li>
}
</ul>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
</div>
@code {
private int currentCount = 0;
public List<string> TestList => new List<string>{
"one", "Two", "Three" };
private void IncrementCount()
{
currentCount++;
Console.WriteLine("Count= {0}", TestList.Count);
TestList.Add("New Item");
Console.WriteLine("Count= {0}", TestList.Count);
}
}
答案 0 :(得分:5)
问题出在这行
public List<string> TestList => new List<string>{ "one", "Two", "Three" };
将其更改为此,它将起作用:
public List<string> TestList = new List<string>{ "one", "Two", "Three" };
=>
箭头称为Expression-body成员,每当调用TestList时,它将运行该表达式,因此,当组件获取TestList时,它将最终每次返回一个new List<string>{ "one", "Two", "Three" };
,而不是仅在初始化时创建新列表。