ViewBag используется как массив - PullRequest
0 голосов
/ 04 мая 2019

Я беру учебник MVC, который учит о ViewBags в ASP.NET. Он никогда не входит в то, чем на самом деле является ViewBag, он просто показывает, когда и как его использовать. Я столкнулся с приведенным ниже кодом, и он, похоже, рассматривал ViewBag как массив в данном конкретном случае, когда я не думал, что это массив.

@for(int i = 0; i <= ViewBag.Items; i++)
    {
        <li>ViewBag.Items[i]</li>
    } 

Что такое ViewBag? Словарь данных? Коллекция? Массив? Похоже, это словарь из того, что я могу исследовать, но я не могу найти четкого ответа, так как ресурсы, которые я нашел, просто говорят вам, как и когда его использовать. Я посмотрел здесь, но информация была очень скудной и не совсем понятной для меня.

https://docs.microsoft.com/en-us/dotnet/api/system.web.mvc.controllerbase.viewbag?view=aspnet-mvc-5.2

Пожалуйста, обратите внимание, что мои навыки в C # еще не полностью исчерпаны, хотя у меня хорошее понимание Как это можно рассматривать как массив?

Кроме того, почему i <= ViewBag.Items в цикле for вместо ViewBag.Items.Count? Никаких объяснений от инструктора, он просто использует это и никогда не объясняет это несоответствие. Спасибо за любую помощь, которую вы можете оказать, чтобы прояснить мое недоразумение. </p>

1 Ответ

1 голос
/ 04 мая 2019

ViewBag на самом деле System.Dynamic.ExpandoObject ( источник )

Для примера, которым вы поделились ViewBag, не используется как array, на самом деле это свойство Itemsarray, Вот пример использования System.Dynamic.ExpandoObject (ViewBag)

using System;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        dynamic ViewBag = new System.Dynamic.ExpandoObject();

        //Add a single string variable to ViewBag

        ViewBag.xxx = "Stackoverflow";
        Console.WriteLine(ViewBag.xxx);

        //Add a list to ViewBag
        ViewBag.Items = new List<int>() {10,20,30};

        for(var i = 0; i < ViewBag.Items.Count; i++) {
           Console.WriteLine(ViewBag.Items[i]);
        }
    }
}

Live Demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...