ListBox上的ViewBag获取空数据

时间:2016-04-27 16:16:04

标签: c# asp.net-mvc linq listbox viewbag

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

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

这是我的Linq填充ViewBag:

/root[data[last()]]

这是我的View ListBox:

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;

2 个答案:

答案 0 :(得分:1)

请在控制器中尝试以下操作...

ViewBag["Group"] = grupos;

......在视图中......

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

答案 1 :(得分:0)

我在不知道底层数据库表的情况下尽可能地尝试了您的示例。我没有发现问题,发现它确实通过包含选择列表的viewbag属性正确呈现选项列表。所以在这个例子中,我在底层数据库表的字符串列表中存根。在这个例子中,我能够通过包含结果列表的viewbag属性填充选项列表。我不得不怀疑你的结论是不是显示它与viewbag属性的内容有关&#34; Group&#34;

我的示例代码:

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>

结果显示如下: enter image description here