【发布时间】:2018-01-02 21:10:27
【问题描述】:
我有一个控件,它需要有多个选择选项来创建令牌。每当创建或删除令牌时都会生成数据库调用。现在的问题是,当我从服务器加载新页面时,控件中没有令牌。以下是我的 Razor 代码:
@Html.DropDownList("ProjectIds", new MultiSelectList(projDDL.Items, "key", "value",Model.SelectedProject), new {@class = "form-control selectorBind", multiple = "multiple",@id= "myid" data_rowid = "ID", data_type="Project",data_myattr= "attr" })
projDDL 是一个包含下拉列表项的字典
SelectedProject 也是包含选定项目键、值的字典
我曾尝试关注此链接MVC DropDown list with MultipleSelect,但没有成功。
从服务器端加载令牌是我的问题。虽然我知道我可以从 Jquery 轻松完成,但我想使用 Razor。
解决方案
查看@Html.DropDownListFor 与@Html.ListBoxFor
@Html.ListBoxFor(y => y.SelectedProjects, new MultiSelectList(projDDL.Items, "key", "value", Model.SelectedProjects), new { @class = "form-control selectorBind", multiple = "multiple", @id = @Model.SkillType+"Project_" + Model.ID, data_rowid = @Model.ID, data_type = "Project", data_myattr = "FK_ProjectID" })
【问题讨论】:
-
使用
ListBoxFor()而不是DropDownListFor()来生成多选。SelectedProjects需要是简单值的集合(与您的选项的值匹配)而不是Dictionary -
另请参阅this answer。并且您的模型是否包含名为
ProjectIdsi 的属性,如果是,那么您的Model.SelectedProject参数将被忽略 - 它的ProjectIds的值决定了哪些选项被选中 -
我想要this 之类的东西。
ListBoxFor()不是我想要的。如果您希望我为SelectedProjects使用集合,而不是用于构建下拉菜单的预定义项目,它们也应该是集合吗? -
是的!阅读链接以解释原因。它对外观没有影响-(它们生成相同的 html)-您应用 jquery 插件
-
答案信息量大,空气清新。感谢您的时间和关注。
标签: jquery asp.net asp.net-mvc razor jquery-select2