ViewBag的Foreach循环在控制器中

时间:2016-05-27 10:34:42

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

是否有可能以某种方式将价格显示在下拉列表旁边,以免弄乱实际的东西?如果是这样,怎么会这样做(从理论上讲)?

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

控制器:

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")

模型如下,

enter image description here

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

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

enter image description here

2 个答案:

答案 0 :(得分:0)

试试这个:

UPDATE:

控制器:

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")

答案 1 :(得分:0)

试试这个

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")