为什么在我的示例(blazor)中,绑定不能与数组和for循环一起使用?

时间:2020-05-05 17:48:38

标签: asp.net-core blazor

我遇到的情况是我可能需要填充0-n个字段。我通过尝试像这样在List<double>循环中绑定到for来实现这一点

@for (var i = 0; i < 3; i++)
{                    
    <input type="text" @bind="TraineeValues[i]" />              
}

问题在于底层列表值似乎没有更新。 小提琴在下面

https://blazorfiddle.com/s/gfhw59v4

2 个答案:

答案 0 :(得分:1)

您需要在循环内创建另一个变量以获取正确的变量

@for (var i = 0; i < 3; i++)
{                 
    var ii = i;   
    <input type="text" @bind="TraineeValues[ii]" />              
}

答案 1 :(得分:0)

Your for loop should contain a local variable like this:

 @for (var i = 0; i < 3; i++)
 {    
     var localVariable = i;                
     <input type="text" @bind="TraineeValues[localVariable]" />              
  }

这是标准的C#行为,您的代码可以访问变量,而不能访问变量的值。您必须定义一个for循环本地变量。也就是说,该变量是在循环的每个迭代中定义的,否则在所有迭代中都是相同的变量,并且在循环结束时,您的代码将使用变量中包含的相同值。

See also this...