使用第一種方法我在列表框中設置默認主題,然後使用第二種方法我只檢索這些被選中的人。檢索列表框中的所有項目,並只選擇那些在db
public void SubjectsList()
{
ViewBag.Subjects =
new SelectList(new[] { "Math", "Physic", "English" }
.Select(x => new { value = x, text = x }),
"Value", "Text");
}
public void SubjectsFromDb(int id)
{
var students = _db.Subjects.AsEnumerable().Where(x => x.StudentId == id).Select(q => new SelectListItem
{
Value = q.Name,
Text = q.Name,
}).ToList();
ViewBag.Subjects = students;
}
我該怎麼做在Listbox中是所有主題,但選擇只有這些是在DB?
這裏是我的列表框
<div class="form-group">
@Html.LabelFor(model => model.Subject, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.ListBoxFor(model => model.Subject,
new MultiSelectList((IEnumerable<SelectListItem>)ViewBag.Subjects, "Value", "Text"),
new { style = "display:block;" })
@Html.ValidationMessageFor(model => model.Subject)
</div>
</div>
它只是需要'ViewBag.Subjects = new SelectList(new [] {「Math」,「Physic」,「English」});'不需要額外的開銷創建匿名對象:) –
@StephenMuecke ok會改善這一點。你能幫我解決問題嗎? –
當然,你能確認屬性'Subject'是'IEnumerable'? –