2017-05-24 47 views
1

我正在创建多选列表框。我能够成功地将项目从模型渲染到列表框。以下是我的代码:M-V-C:如何在编辑模式下获取或指示列表框中的选定项目?

属性

public IEnumerable<SelectListItem> carTypes { get; set; } 
public IEnumerable<string> selectedCarTypes { get; set; } 

创建操作

public ActionResult Create() 
{ 
    List<SelectListItem> selectListItem = new List<SelectListItem>(); 

    foreach(CarType type in db.CarTypes) 
     { 
      SelectListItem item = new SelectListItem() 
      { 
       Text = type.Name, 
       Value = type.Id.ToString() 
      }; 
      selectListItem.Add(item); 
     } 

     Assigning assign = new Assigning(); 
     assign.carTypes = selectListItem; 
     return View(assign); 
} 

查看

@Html.ListBoxFor(model=>model.selectedCarTypes,Model.carTypes) 

ŧ他的问题是编辑行为。我一直试图突出显示Edit View中的所有列表框,这些列表框是为特定的AssignId选择的。在列表框中有三个项目:现代,丰田和宝马,我选择宝马和丰田和创建分配。现在,当我回到编辑视图时,它应该突出显示宝马和丰田。

我参考了here,但没有为我工作。有没有解决这个问题的方法?

修改:这是我Edit Action

public ActionResult Edit(int? id) 
{ 
    if (id == null) 
    { 
     return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
    } 
    Assigning assign = db.Assigning.Find(id); 
    if (assign == null) 
    { 
     return HttpNotFound(); 
    } 
    return View(assign); 
} 
+0

发表您的编辑方法List<string>。 – User3250

+0

完成。现在请检查请 –

+0

你在Edit action中添加'carTypes'在哪里?您需要在编辑时为选定的车型设置为“selected = true”。 – User3250

回答

1

您没有设置您的模型时,编辑:

  1. Model.carTypes应该是所有CarTypes的List<SelectListItem>

  2. Model.selectedTypes应该是所有选择值

0

你可以把它当作的SelectList这需要在你的情况下,选择价值

public SelectList(IEnumerable items, object selectedValue)

@Html.DropDownListFor(n => n.selectedCarTypes, 
        new SelectList(Model.carTypes, Model.SelectedCarTypes)) 
+0

没有工作。我需要列表框不下拉列表 –

相关问题