Почему привязка не работает с массивом и для l oop в моем примере (blazor)? - PullRequest
0 голосов
/ 05 мая 2020

У меня есть ситуация, когда у меня есть поля от 0 до n, которые, возможно, необходимо заполнить. Я добился sh этого, пытаясь привязать к List<double> в for l oop как таковом

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

Проблема в том, что значения базового списка, похоже, не обновляются. Скрипка ниже

https://blazorfiddle.com/s/gfhw59v4

Ответы [ 2 ]

1 голос
/ 05 мая 2020

Вам необходимо создать другую переменную внутри l oop для получения правильной переменной

@for (var i = 0; i < 3; i++)
{                 
    var ii = i;   
    <input type="text" @bind="TraineeValues[ii]" />              
}
0 голосов
/ 06 мая 2020
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; то есть эта переменная определяется на каждой итерации l oop, в противном случае это одна и та же переменная на всех итерациях, и ваш код будет использовать то же значение, содержащееся в переменной, когда l oop заканчивается.

См. Также это ...

...