我为标签创建了一个ListBox,它绑定到一个音符。创建视图工作正常,但是我想在编辑视图的列表框中预先选择已选择的标签。 在运行下面的代码时,会出现ListBox,但是没有选择任何标签。我试图调试它并注意到,控制器正确分配了所选属性。同时在查看视图中的“Model.Tags”时,它会正确显示它们,直到它在视图中执行该行 - 然后所有选定的属性都返回“false”
该视图是一个强类型视图:
public class TagViewModel
{
public IEnumerable<SelectListItem> Tags { get; set; }
public IEnumerable<string> SelectedTags { get; set; }
}
控制器
using (var db = new NoteContext())
{
Note note = db.Notes.Find(id);
TagViewModel tagViewModel = new TagViewModel();
List<SelectListItem> tags = new List<SelectListItem>();
foreach (Tag tag in db.Tags)
{
bool isSelected = false;
if ( note.Tags.Exists(tagElement => tagElement.TagId == tag.TagId))
{
isSelected = true;
}
SelectListItem selectListItem = new SelectListItem()
{
Text = tag.Name,
Value = tag.TagId.ToString(),
Selected = isSelected
};
tags.Add(selectListItem);
}
tagViewModel.Tags = tags;
return View(tagViewModel);
}
和视图中的HTML帮助
@Html.ListBoxFor(model => model.SelectedTags, Model.Tags)
(抱歉我的英语不好)