2011-03-29 77 views
3

嗨复选框,下拉(组合框),在ASP.NET MVC

我建立一个ASP.NET MVC 2应用程序和迄今使用常规的下拉列表:

<%: Html.DropDownListFor(model => model.LS.L1, Model.LS.Location1List, "-- choose place --", new { @class = "dd1" })%> 

现在我需要改为使用复选框列表将其更改为下拉列表。这意味着两件事情:

  1. 该模式最多可以更改,以便L1可以容纳多个值(而不仅是INT),莫比也Location1List最从的SelectList改变某种名单?
  2. 的DropDownListFor(组合框)最被改为“DropDownCheckListFor。

其重要的,这是基本的可能,所以我们可以保持浏览器保持兼容(即使在智能手机)。

,你可以看到它也提交重要的是,选择的值填充到模型对象(由默认粘合剂)

我已经看过这个下拉菜单:http://www.erichynds.com/jquery/jquery-ui-multiselect-widget/

它的外观但我不知道如何将其转换为ASP.NET MVC,以便将所选值填充到提交时的模型对象(如DropDownListFor)。此jQuery解决方案也许是非常复杂的。

普莱斯建议

回答

4

记住MVC佣工只呈现HTML标记。所以要根据您链接页面上的说明,你只需要生成

<select multiple="multiple"> 

为了做到这一点,你需要使用Html.ListBoxFor而不是Html.DropDownListFor。然后,当您包含所有正确的JavaScript文件时,您可以简单地添加一个JavaScript块。这看起来是这样的:

$(function() { 
    $('.dd1').multiselect(); 
}); 
+0

啊哈,这看起来容易,我会尝试,并返还给您。 – Banshee 2011-03-30 07:05:12

+0

它的工作原理,谢谢! – Banshee 2011-03-31 11:43:27

0

本教程显示了MVC与复选框创建多选下拉 Multiselect dropdown with checkboxes in MVC

你需要选择标记完成一步一步的指导

<select id="CustomerId" name="CopyFromCustomerId"></select> 

,或者您可以使用Html.ListBoxFor

您需要以下脚本

$('#CustomerId').multiselect({ 
      includeSelectAllOption: true 
     }); 

及以下的CSS和脚本文件

<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" type="text/css" /> 
<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>  
<script type="text/javascript" src="http://davidstutz.github.io/bootstrap-multiselect/dist/js/bootstrap-multiselect.js"></script> 
<link rel="stylesheet" href="http://davidstutz.github.io/bootstrap-multiselect/dist/css/bootstrap-multiselect.css" type="text/css"/>