Присвоение идентификатора ViewBag и присвоение ему значения в MVC - PullRequest
0 голосов
/ 18 марта 2020

У меня в настоящее время есть контроллер, который циклически просматривает мою базу данных «Сайты» и получает значение на основе идентификатора их сайта. Это выглядит так

 osiTotal[s.ID] = osiPartCost[s.ID] + osiCompCost[s.ID] + osiItemCost[s.ID];                 
 ViewBag.OSITotal[s.ID] = osiTotal[s.ID]; // Receive error message on this line

И тогда мой просмотр выглядит так

 @foreach (Site s in sites)
{
 <tr>
                <td style="font-weight : bold;">Total</td>
                <td style="font-weight : bold;">@ViewBag.OSITotal[s.ID]</td>
 </tr>
}

Но я получаю сообщение об ошибке

Невозможно выполнить привязку во время выполнения к нулевой ссылке

Я пытался сделать это, на мой взгляд

 @foreach (Site s in sites)
{
 <tr>
                <td style="font-weight : bold;">Total</td>
                <td style="font-weight : bold;">@ViewBag.OSITotal[1]</td>
 </tr>
}

Там, где я автоматически присваиваю @ViewBag.OSITotal значение «1», но все равно получаю ту же ошибку

Так что у меня возникает проблема, когда я пытаюсь присвоить значение osiTotal [s.ID ] в ViewBag

Почему это?

1 Ответ

0 голосов
/ 18 марта 2020

Какой тип ViewBag.OSITotal? Вам нужно сначала создать и присвоить ему новый массив или коллекцию, иначе он будет нулевым. ViewBag.OSITotal [0] пытается разыменовать пустую коллекцию, выдав ошибку. Например, если ID является целым:

ViewBag.OSITotal = new Dictionary<int,int>();
...