使用多个ID填充Dropdownlistfor

时间:2015-12-16 19:04:39

标签: c# asp.net-mvc entity-framework razor

我正在使用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的那个,但它似乎不起作用

1 个答案:

答案 0 :(得分:3)

Html.DropDownListFor呈现标准select元素,其中只有一个选项可以标记为已选中。

如果您想要选择倍数,则应使用Html.ListBoxFor