You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ASP.NET MVC视图中循环遍历ViewBag.A至ViewBag.Z?

ASP.NET MVC视图中动态访问ViewBag属性的问题

你想在ASP.NET MVC视图中循环遍历ViewBag.A到ViewBag.Z,但当前代码里用@letter作为ViewBag属性名的写法行不通,以下是具体说明和修正方案:

原问题代码

@{
    for (char letter = 'A'; letter <= 'Z'; letter++)
    {
        <h1 id=@letter>@letter</h1>       

        if (ViewBag.@letter != null)
        {
            foreach (var item in ViewBag.@letter))
            {
                 // do something here
            }
        }
    }
}

问题说明

直接使用ViewBag.@letter无法实现预期效果,因为Razor会将@letter解析为名为"letter"的ViewBag属性,而不是把变量letter的字符值(比如'A'、'B')作为属性名去查找。

修正方案

ViewBag本质是DynamicViewDataDictionary,支持通过索引器以字符串键的形式访问属性。你只需要把字符变量转成字符串,作为索引键传入即可:

@{
    for (char letter = 'A'; letter <= 'Z'; letter++)
    {
        <h1 id="@letter">@letter</h1>       

        // 将字符转为字符串,通过索引器获取对应ViewBag属性
        var sectionItems = ViewBag[letter.ToString()];
        if (sectionItems != null)
        {
            foreach (var item in sectionItems)
            {
                 // 这里编写你的业务逻辑,比如输出项内容
                 <div>@item.Name</div>
            }
        }
    }
}

这样就能正确遍历ViewBag.A到ViewBag.Z的所有属性,当对应字母的ViewBag属性存在时,执行后续循环逻辑。

内容的提问来源于stack exchange,提问作者user22133709

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 20:03:08