我制作了一个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;
答案 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>