ListBox 上的 ViewBag 获取空数据

ViewBag on ListBox gets empty data

我创建了一个 LINQ 语句来填充 ViewBag 并将其显示在我的视图中,但是由于某种原因我的 ListBox 显示为空所以我将 LINQ 语句保存在一个 txt 文件中以查看它是否为空,但它有正确的数据,所以我的问题是:

为什么我的 ViewBag 没有显示在我视图中的 ListBox 上?

这是我的 Linq 填充 ViewBag:

foreach (var item in db.VENTA_PLATILLOS
                       .Select(v => new { Turno = v.Nombre_Turno, Total = v.Total })
                       .GroupBy(l => l.Turno)
                       .AsEnumerable()
                       .Select(z => new { Turno = z.Key, Total = String.Format("{0:$#,##0.00;($#,##0.00);Zero}", Decimal.Round(z.Sum(l => l.Total), 0)) })
                       .OrderByDescending(a => a.Turno))

{
    listadesumas.Add(string.Format("{{{0}, Total = {1}}}", item.Turno, item.Total));
}

//txt file to see if Linq Statemnt is filled correctly and it is
var json5 = JsonConvert.SerializeObject(listadesumas);
System.IO.File.WriteAllText(@"C:\inetpub\wwwroot\SumasTurno.txt", json5);

//Filling my Viewbag with my LinQ Group By Result
var grupos = new SelectList(listadesumas.ToList());
ViewBag.Group = grupos;

这是我的视图列表框:

@{
    var group = (SelectList)ViewBag.Group;
 }

@Html.ListBox("Group", (IEnumerable<SelectListItem>)ViewBag.Group, new { style = "width: 300px;" })

改为在您的控制器中尝试以下操作...

ViewBag["Group"] = grupos;

...在视图中...

@Html.ListBox("Group", (IEnumerable<SelectListItem>)ViewBag["Group"], new { style = "width: 300px;" })

我在不知道底层数据库的情况下尽我所能地尝试了你的例子table。我没有发现问题,发现它确实通过包含 select 列表的 viewbag 属性 正确呈现选项列表。所以在这个例子中,我存入了底层数据库 table 的字符串列表。在此示例中,我能够通过包含结果列表的 viewbag 属性 填充选项列表。我想知道你得出的没有显示的结论是否与viewbag的内容有关属性 "Group"

我的示例代码:

public ActionResult Index()
{

    List<string> listadesumas = new List<string>();
    var FakeDbTable = new List<string>() { "a.bc", "a.cde", "b.xyz" };

    foreach (var item in FakeDbTable.Select(v=> new { itemname = v })
            .GroupBy(l => l.itemname.Substring(0, 1)).AsEnumerable().Select(z =>new { GroupingValue= z.Key, Total=string.Format("count {0}",z.Count())}).OrderByDescending(a=>a.GroupingValue))
             {
        listadesumas.Add(string.Format(" result item {0}",item));
             }

    var grupos = new SelectList(listadesumas.ToList());

    ViewBag.Group = grupos;

    return View();
}

查看代码

    @{
    ViewBag.Title = "Home Page";
    var group = (SelectList)ViewBag.Group;
}
<div class="row">
    <div class="col-md-12">
        @Html.ListBox("Group", (IEnumerable<SelectListItem>)ViewBag.Group, new { style = "max-width: 500px;" })
    </div>
</div>

结果如下: