像数组一样访问Viewbag?

时间:2014-09-24 13:37:51

标签: html asp.net-mvc razor viewbag

想象一下名为

的视图包
 ViewBag.Modes

这包含以下内容:

Simple
Advanced
Manual
Complete

如何通过索引访问viewbag,就像在数组中一样?

例如Simple在索引0处然后看起来像这样

ViewBag.Modes[0]

我尝试了上述内容,但它不起作用......如何使用viewbag复制此内容,或者我可以使用哪种解决方法?

5 个答案:

答案 0 :(得分:4)

这对我有用:

控制器:

public ActionResult Index()
{
    var stringArray = new string[3] { "Manual", "Semi", "Auto"};
    ViewBag.Collection = stringArray;
    return View();
}

查看:

    @foreach(var str in ViewBag.Collection)
    {
        @Html.Raw(str); <br/>
    }

    @for (int i = 0; i <= 2; i++ )
    {
        @Html.Raw(ViewBag.Collection[i]) <br/>
    }

输出:

enter image description here

抱歉不使用您的条款。我从头顶一起把它拼凑起来。

答案 1 :(得分:4)

ViewBag是一个动态属性,它使事情变得复杂。

对于您正在寻找的行为,您可能希望改用ViewData。 ViewData是一个字典,这意味着您可以使用Linq:

访问每个索引的值
this.ViewData.Keys.ElementAt(0);

答案 2 :(得分:0)

使用ViewBag:

<强>控制器

public ActionResult Index()
{
List<string> modes = new List<string>();
modes.Add("Simple");
modes.Add("Advanced");
modes.Add("Manual");
modes.Add("Complete");
ViewBag["Modes"] = modes;
return View();
}

查看

<h1>List of Modes</h1>
@{foreach (var mode in ViewBag.Modes) {
    <li>
        @hobby
    </li>
} }

----------------------------------------------- -----------------

使用ViewData:

<强>控制器

public ActionResult Index()
{
    string[] Modes = {"Simple", "Advanced", "Manual", "Complete" };
    ViewData["Modes"] = Modes;
    return View();
}

**视图

<h1>List of Modes</h1>
@foreach (string mode in ViewData["Modes"] as string[]) {
    <li>
        @mode
    </li>
}

答案 3 :(得分:0)

感谢您的帖子,但在写完这篇文章后不久,我想出了一个模型&amp;列表如下所示也可以使用viewbag而不是model。

List<string> list = new List<string>();
            foreach (Models.AppModeInfo blah in Model.theAppModes)
            {
                list.Add(blah.Name);
            }

            var AppModeText = "";
            switch (item.AppModeId)
            {
                case 1:
                    AppModeText = list[0];
                    break;
                case 2:
                    AppModeText = list[1];
                    break;
                case 3:
                    AppModeText = list[2];
                    break;
                case 4:
                    AppModeText = list[3];
                    break;
                case 5:
                    AppModeText = list[4];
                    break;
            }

答案 4 :(得分:0)

在您的控制器中:

string[] Modes = {"Simple", "Advanced", "Manual", "Complete" };
ViewData["Modes"] = Modes;

在您看来:

<div>
    @(((string[])ViewData["Modes"])[0]) 
</div>
<div>
    @(((string[])ViewData["Modes"])[1]) 
</div>
<div>
    @(((string[])ViewData["Modes"])[2]) 
</div>