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

Jey*_*mov 18 html asp.net asp.net-mvc razor

我想使用多选在 选上的.我有技能模型,

public class Skill 
    {
        public int Id { get; set; }
        public string Name { get; set; }        
    }
Run Code Online (Sandbox Code Playgroud)

这适用于我的应用程序:

    <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>
Run Code Online (Sandbox Code Playgroud)

我想用我的数据替换国家数据.在控制器我写:

        var list = MyService.LoadAllSkills();
        ViewBag.Skills = new MultiSelectList(list, "Id", "Name");
Run Code Online (Sandbox Code Playgroud)

在视图中:

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

查看@ Html.ListBox()@ Html.DropDownList()的结果不一样<select>

我得到了这样的结果:

在此输入图像描述

但是,我想得到结果

在此输入图像描述

如何更改选择的样本?

Dar*_*rov 14

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

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

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

  • 那么你可能还有一些其他的设置插件的问题,它与ASP.NET MVC严格无关.就服务器端代码而言,它应该生成与您在问题中显示的内容完全相同的标记.另请注意,在服务器端使用`data_placeholder`时,帮助程序会在生成相应属性时自动将其转换为`data-placeholder`. (2认同)