我正在使用dropdownlist for html helper来挑选菜肴中的成分。我可以让它显示所有的成分,我可以让它发布价值的,但我似乎不能填充它,当我想编辑现有成分的菜。
我的控制器:
public ActionResult Edit(int id)
{
DishViewModel dvm = new DishViewModel();
dvm.Dish = facade.GetDishGateway().Get(id);
dvm.Dish.Ingredients.ForEach(x => dvm.SelectedIds.Add(x.Id));
return View(dvm);
}
我的观点模型:
public class DishViewModel
{
Facade facade = new Facade();
public DishViewModel()
{
SelectedList = facade.GetIngredientGateway().GetAll().FirstOrDefault().Id.ToString();
SelectedIds = new List<int>();
}
public Dish Dish { get; set; }
public List<int> SelectedIds { get; set; }
public string SelectedList { get; set; }
public List<SelectListItem> SelectList
{
get
{
List<SelectListItem> temp = new List<SelectListItem>();
foreach (var item in facade.GetIngredientGateway().GetAll())
{
temp.Add(new SelectListItem { Text = item.Name + ": " + item.Price + ",-", Value = item.Id.ToString() });
}
return temp;
}
}
}
我的观点:
<div class="form-group row">
@Html.LabelFor(model => model.Dish.Ingredients, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.SelectedIds, Model.SelectList, new { @multiple = "multiple"})
</div>
</div>
根据我的理解,模型=&gt; model.selectedIds是填充dropdownlistfor的那个,但它似乎不起作用
答案 0 :(得分:3)
Html.DropDownListFor
呈现标准select
元素,其中只有一个选项可以标记为已选中。
如果您想要选择倍数,则应使用Html.ListBoxFor
。