【问题标题】:Foreach loop of ViewBag in controller控制器中 ViewBag 的 Foreach 循环
【发布时间】:2016-05-27 10:34:41
【问题描述】:

是否有可能以某种方式将价格显示在下拉列表旁边,以免与实际内容混淆?如果是这样,人们将如何去做(理论上)?


有一个当前显示项目名称的下拉列表。试图让它显示名称 + 价格,但我要么收到错误,要么没有将任何内容保存到数据库中。

控制器:

public ActionResult Buy()
    {
        List<ShowService.Itemss> itemlist = showklient.GetItems().ToList();
        foreach (var item in itemlist)
        {
            item.Name = item.Name + " || Price: " + item.Price + ":-";
        }
        ViewBag.Id = new SelectList(itemlist, "Id", "Name");
        return View();
}

视图中的下拉列表:

  @Html.DropDownListFor(m => m.Id, (IEnumerable<SelectListItem>)ViewBag.Id, "Pick item")

型号如下,

我做错了什么/我错过了什么?

截至目前,它正在显示价格。但它只是将 ItemId 0 发送到数据库。 (更新了代码)

【问题讨论】:

  • 您似乎没有将模型返回到您的视图中。你的意思是return View(itemlist);吗?
  • 您的具体错误描述是什么?
  • @counterflux 视图已经在使用模型,用于购买功能 (@model Grupp6Sida.SaleService.Sale)
  • 我不知道如何复制错误,但它正在谈论将模型传递到目录但需要另一个模型。 @SophisticatedUndoing
  • 您正在做的是使用名称+价格更新项目列表中的项目,但您需要在视图中传递更新的模型对象。就像return View(Model object) 在你的情况下return View(itemlist) 我认为

标签: c# asp.net asp.net-mvc wcf


【解决方案1】:

试试这个:

更新:

控制器:

List<ShowService.Itemss> itemlist = showklient.GetItems().ToList();
ViewBag.ItemId= new SelectList(itemlist, "Id", "Name");

查看:

 @Html.DropDownList("ItemId", null, "Pick Item")

@Html.DropDownListFor(m => m.ItemId, (IEnumerable<SelectListItem>)ViewBag.Id, "Pick item")

【讨论】:

  • 仍然只是给我从数据库中获取的项目名称
  • 我认为您需要将itemlist 添加到ViewBag.Id,而不是再次调用showklient.GetItems() 函数。查看更新的答案。
  • 现在它在列表中显示价格,但没有任何内容保存到数据库中。
  • 是的,下拉菜单是 100% 正确的。我添加了一个断点来检查发送到数据库的内容,除了 Id(主键)突然一直为 0 之外,一切似乎都井井有条
【解决方案2】:

试试这个

List<ShowService.Itemss> itemlist = showklient.GetItems().ToList();    
foreach (var item in itemlist)
{
    item.Name = item.Name + " || Price: " + item.Price + ":-";
}
ViewBag.Id = new SelectList(itemlist , "Id", "Name");

在视图中您在绑定下拉列表时使用 ItemId,但在您的模式中您没有任何名称为 itemId 的属性,因此请在可能为 Id 时检查它> 属性如下。

@Html.DropDownListFor(m => m.Id, (IEnumerable<SelectListItem>)ViewBag.Id, "Pick item")

【讨论】:

  • 我之前和现在都尝试过类似的东西,它只是将 Id 主键设置为 0 并尝试将其发送到数据库,结果什么都没有发生
  • 请保留调试器并检查您是否正确获取项目列表中的 id?
猜你喜欢
  • 2014-08-08
  • 1970-01-01
  • 1970-01-01
  • 2021-08-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-23
  • 1970-01-01
  • 2012-05-01
相关资源
最近更新 更多