如何在mvc 4中使用多个选择?

时间:2012-12-08 11:02:58

标签: asp.net html asp.net-mvc razor

我想使用多个选择 Chosen。 我有技能模型,

public class Skill 
    {
        public int Id { get; set; }
        public string Name { get; set; }        
    }

这适用于我的应用程序:

    <select data-placeholder="Choose a Country..." class="chzn-select" multiple >
           <option value=""></option>
           <option value="United States">United States</option>
           <option value="Albania">Albania</option>
           <option value="Algeria">Algeria</option>
   </select>

我想用我的数据替换国家/地区数据。在控制器中我写道:

        var list = MyService.LoadAllSkills();
        ViewBag.Skills = new MultiSelectList(list, "Id", "Name");

在视图中:

@Html.ListBox("Name", ViewBag.Skills as MultiSelectList,
              new { @class = "chzn-select" } )

查看 @ Html.ListBox()的结果, @ Html.DropDownList()与<{1}}不一样

我得到了这样的结果:

enter image description here

但是,我希望得到结果

enter image description here

如何更改选择样本?

2 个答案:

答案 0 :(得分:14)

我可以在硬编码示例(您声明工作)与使用ListBox帮助程序生成的示例之间看到的唯一区别是缺少data-placeholder属性。所以:

@Html.ListBox(
    "Countries", 
    ViewBag.Skills as MultiSelectList,
    new { @class = "chzn-select", data_placeholder = "Choose a Country..." } 
)

这应该至少生成与您所说的工作相同的标记。如果它不起作用,那么可能你没有正确设置插件或你有一些其他的javascript错误。阅读插件的文档,了解如何设置它。

答案 1 :(得分:0)

正如其他人提到的,似乎你的问题原因不是服务器端(razor),它实际上是客户端(很可能是你的Jquery插件初始化)。

可能在尚未生成调用html DOM的插件初始化时,将插件初始化脚本放在正文末尾或$(document).ready()内,并且不要忘记查看控制台以查看是否有任何错误

快乐编码