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>
结果如下:
我创建了一个 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>
结果如下: