【问题标题】:ViewBag used like an arrayViewBag 像数组一样使用
【发布时间】:2019-05-04 21:41:48
【问题描述】:

我正在学习有关 ASP.NET 中 ViewBags 的 MVC 教程。它从不涉及 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# 技能还不是很全面,虽然我有一个不错的一般理解。如何将其视为数组?

另外,为什么 for 循环中的 i

【问题讨论】:

  • 这段代码运行正常吗?
  • 原来是导师出错了,后来改成View,Items.Count,这样就更有意义了。糟糕的课程。像这样的错误真的可以通过像我这样的新手关闭。但是我还是不知道怎么把它当成一个数组来处理。
  • 我阅读了提供的教程链接,它是一样的。它向您展示了如何使用它,但并没有真正解释它是什么。由于它是 DataView 的包装器,因此我认为它必须是字典。字典可以像数组一样使用吗?
  • 正如我所说的 ViewBag 是一个System.Dynamic.ExpandoObject,在你分享的例子中ViewBag 没有用作array,实际上它的Items 属性是一个array,我'已经为您创建了一个示例。 dotnetfiddle.net/ZyKGlM

标签: asp.net-mvc model-view-controller


【解决方案1】:

ViewBag 实际上是一个System.Dynamic.ExpandoObject (source)

对于你分享的例子ViewBag没有用作array,实际上它的Items属性是一个array,这里是一个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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-10
    • 1970-01-01
    • 2011-08-27
    • 1970-01-01
    相关资源
    最近更新 更多