加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – 如何使用DropdownList助手正确创建MultiSelect

发布时间:2020-12-15 18:54:37 所属栏目:asp.Net 来源:网络整理
导读:(对不起,这里有几个项目,但没有一个似乎允许我得到这个工作。) 我想创建一个DropDownList允许多个选择。我可以填充列表,但我不能得到当前选择的值似乎工作。 我在我的控制器有以下: ViewBag.PropertyGroups = from g in db.eFinGroups where g.GroupType
(对不起,这里有几个项目,但没有一个似乎允许我得到这个工作。)

我想创建一个DropDownList允许多个选择。我可以填充列表,但我不能得到当前选择的值似乎工作。

我在我的控制器有以下:

ViewBag.PropertyGroups = from g in db.eFinGroups
                              where g.GroupType.Contents == "P"
                              select new
                              {
                                  Key = g.Key,Value = g.Description,Selected = true
                              };

ViewBag.SelectedPropertyGroups = from g in company.Entities .First().Properties.First().PropertyGroups select new { g.eFinGroup.Key,Value = g.eFinGroup.Description };

在视图中我有:

@Html.DropDownListFor(model => model.PropertyGroupsX,new MultiSelectList(ViewBag.PropertyGroups,"Key","Value",ViewBag.SelectedPropertyGroups),new { @class = "chzn-select",data_placeholder = "Choose a Property Group",multiple = "multiple",style = "width:350px;" })

PropertyGroupX是模型中的字符串[]。

我已经尝试所有类型的迭代与选定的属性…传递的值,只是关键,两者等。

另外,PropertyGroupX应该是什么类型?是字符串数组是否正确?还是应该是包含当前属性组的字典?我真的很难找到这方面的文件。

有人建议我应该使用ListBoxFor。我改变了,仍然有同样的问题。在呈现选项标签时,所选值未设置为选定值。这里是我试过:

@ Html.ListBoxFor(model => model.PropertyGroups,new MultiSelectList(ViewBag.PropertyGroups,“Key”,“Value”))

我已经尝试了model.propertyGroups作为字符串匹配的值的集合,作为Guid的集合,匹配此ID和作为匿名类型与键和值以匹配ViewBag中的项目。没有什么似乎工作。

解决方法

如果要创建多选列表,则不要使用DropDownListFor。你使用ListBoxFor帮助器。

查看型号:

public class MyViewModel
{
    public string[] SelectedIds { get; set; }
    public IEnumerable<SelectListItem> Items { get; set; }
}

控制器:

public ActionResult Index()
{
    var model = new MyViewModel
    {
        // preselect the first and the third item given their ids
        SelectedIds = new[] { "1","3" },// fetch the items from some data source
        Items = Enumerable.Range(1,5).Select(x => new SelectListItem
        {
            Value = x.ToString(),Text = "item " + x
        })
    };
    return View(model);
}

视图:

@model MyViewModel
@Html.ListBoxFor(x => x.SelectedIds,Model.Items)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读