忽略MVC4 .NET ListBoxFor Selected属性

时间:2016-08-17 09:37:42

标签: c# asp.net-mvc asp.net-mvc-4 listbox

我为标签创建了一个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)

(抱歉我的英语不好)

0 个答案:

没有答案