利用Select2优化@Html.ListBoxFor显示,学会用MultiSelectList

最近需要用到多选框,Asp.Net MVC自带的@Html.ListBox或@Html.ListBoxFor的显示效果太差,于是找到了Select2进行优化,并正式了解了多选框的操作方法。

首先介绍多选框的操作方法;

一、定义一个MultipleSelectModel

public class MultipleSelectModel
    {
        public int[] MultipleItem { get; set; }
    }

二、在Controller中实例化MultiSelectList

public ActionResult MultipleSelectView()
        {
            //实际可从数据库取数填充
            List<SelectListItem> listBox = new List<SelectListItem>();
            for (int i = 0; i < 4; i++)
            {
                var temp = new SelectListItem
                {
                    Value = i.ToString(),
                    Text = "第" + i.ToString()
                };
                listBox.Add(temp);
            }
            //定义已选数据
            var viewModel = new MultipleSelectModel();
            viewModel.MultipleItem = new int[] { 0, 1 };

            ViewBag.MultiSelecteTest = new MultiSelectList(listBox, "Value", "Text");
            return View(viewModel);
        }

三、View中利用@Html.ListBoxFor()可初始化已选项

@model Models.ViewModel.MultipleSelectModel
@{
    ViewBag.Title = "MultipleSelectView";
    Layout = "~/Views/Shared/_Layout.cshtml";
}<h2>MultipleSelectView</h2>
@Html.ListBoxFor(model => model.MultipleItem, ViewBag.MultiSelecteTest as MultiSelectList, new { @class = "form-control multiple-select"})

四、利用Select2美化多选框

1、首先引用Select2的css文件及javascript文件,教学因素,没有将select2放在BundleConfig中

@Styles.Render("~/Content/jqueryui")
@Styles.Render("~/Content/select2")

@section scripts{
    <script src="~/Scripts/select2.min.js"></script>
}

2、简单使用Select2

<script type="text/javascript">
        $(document).ready(function () {
            $(‘.multiple-select‘).select2();
        });
    </script>

五、效果图

六、用Ajax刷新分页视图中如何使用到Select2

1、利用Ajax.BegionForm中的OnComplete,调用selectDeviceSuccess的jQuery方法

@using (Ajax.BeginForm("_PartialViewAction", "ViewTestr",
                                                                    new AjaxOptions() { HttpMethod = "POST",  OnComplete = "selectDeviceSuccess" },
                                                                    new { enctype = "multipart/form-data" }))

2、selectDeviceSuccess中再次使用Select2

function selectDeviceSuccess() {
    $(‘.multiple-select‘).select2({ language: ‘zh-CN‘ }); }

七、总结

@Html.ListBoxFor封装了初始化过程,传到后台的数据是数组int[] MultipleItem。用$(‘.multiple-select‘).val()获得选中值以‘,‘分隔。

时间: 2024-10-06 02:47:50

利用Select2优化@Html.ListBoxFor显示,学会用MultiSelectList的相关文章

利用DBMS_SQLTUNE优化SQL

DBMS_SQLTUNE优化SQL是在oracle10g才出来的新特性,使用它能很大程度上方便对sql的分析和优化.执行DBMS_SQLTUNE包进行sql优化需要有advisor的权限: stat>grant advisor to stat; Grant succeeded. 使用DBMS_SQLTUNE包进行SQL优化,大致可以分为四个步骤: 创建优化任务 执行优化任务 显示优化任务的结果 按照建议执行优化 一.创建优化任务使用dbms_sqltune.create_tuning_task函

基于MVC+EasyUI的Web开发框架经验总结(1)-利用jQuery Tags Input 插件显示选择记录

最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重构完善过程中,很多细节花费不少时间进行研究和提炼,一步步走过来,也积累了不少经验,本系列将主要介绍我在进一步完善我的Web框架基础上积累的经验进行分享,本随笔主要介绍利用jQuery Tags Input 插件显示选择记录. 我在利用jQuery Tags Input 插件之前,一直想找一个合适的J

学习ASO优化,你需要学会的那些工具

首先,ASO是针对于苹果应用APP的优化方式,由于AppStore是一个封闭的体系,运用外部工具评估APP的运营质量并进行优化则是我们急需学会的技能.那么学习ASO优化,我们需要学会的工具有哪些? 1.APPDUU 软件用于查看APP的关键词覆盖数(KCN).关键词即时排名.关键词相关APP数量,苹果权重(iAR),下载量评级指数(DLR),App Store数据(榜单排名/热门搜索词/关键词热度),关键词拓展,中文分词工具,新增评论数趋势图. 2.App Annie 软件用于查看APP详细信息

iOS开发- 文件共享(利用iTunes导入文件, 并且显示已有文件)

今天要实现一个功能, 通过iTunes导入文件到应用中, 并且在应用中对这个文件进行编辑. 类似我们平时经常使用的 PDF阅读器那样的东西, 我们可以自己导入我们的电子书. 源码下载:https://github.com/colin1994/iTunesTest.git 下面具体介绍下实现过程. 先看效果图. 图1. 未实现功能前, iTunes截图 图2. 实现功能后, iTunes截图 图3. 实现功能后, 运行截图. 好了, 通过图片, 我们可以看到实现的效果. 功能包括: 允许通过iTu

基于MVC4+EasyUI的Web开发框架经验总结(1)-利用jQuery Tags Input 插件显示选择记录

最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重构完善过程中,很多细节花费不少时间进行研究和提炼,一步步走过来,也积累了不少经验,本系列将主要介绍我在进一步完善我的Web框架基础上积累的经验进行分享,本随笔主要介绍利用jQuery Tags Input 插件显示选择记录. 我在利用jQuery Tags Input 插件之前,一直想找一个合适的J

利用TCMalloc优化Nginx性能

技术说明: TCMalloc 全称Thread-Cachig Malloc,是谷歌开发的开源工具Google-preftools中的一个成员.与标准的glibc库的Malloc相比,TCMalloc库在内存分配效率和速度上要高很多,在很大程度上提高了服务器在高并发情况下的性能,从而降低了系统的负载. 一.安装libunwind: 1.安装libunwind: http://download.savannah.gnu.org/releases/libunwind/ 下载libunwind-0.99

利用Gulp优化部署Web项目[长文慎入]

Gulp Gulp是一款项目自动化的构建工具,与Grunt一样可以通过创建任务(Task)来帮助我们自动完成一些工作流的内容.当然,今天我们的内容并不是讨论这二者的区别,仅仅是介绍介绍如何利用Gulp来优化我们的Web项目中前端自动化工作流. 引言 相信不少人看过百度大牛张云龙的那篇讲解大公司里怎样开发和部署前端代码?的文章,如果没有阅读的朋友请戳.由于在项目部署时,我们需要对项目js,css,image等文件进行压缩,合并处理,从而减少客户端对服务Http请求,已达到增强页面的加载速度,优化服

使用CSS3的background-size优化Sprites图显示

可以创建一张Sprites图,这张图既有普通分辨率图像,又有高分辨率下的图像? 你可以,但你还是要面对,你的用户在一个较慢的带宽下下载一个大图的烦恼.你也要同时面对IE9以下的浏览器不支持background-size的麻烦问题. 你最好还是分别为高分辨率和普通分辨率创建不同的两张Sprites图.这个时候又有不同的声音了,这不是增加工作量吗?但这真的不是,在我的工作 流中,我会先创建一张高分辨率的Sprites图像,然后制一份,并把尺寸缩放一半.当图像需要更新时,只需要再一次处理高分辨率下的图

js 利用 ajax 加载 js ,显示加载进度 ,严格按照js的顺序先后加载到页面

js 利用 ajax 加载 js ,显示加载进度 ,严格按照js的顺序先后加载到页面 , 做手机端开发时,发现一个问题,有些浏览器,在网速比较慢的情况下,js文件没有加载完,后续的调用已经开始调用了,导致出错.后来使用此法,保证了任何时候都完全是按照js的先后顺序执行的. 源码: /** * js 利用 ajax 加载 js ,显示加载进度 ,严格按照js的顺序先后加载到页面 * 原理:利用 ajax 异步多线程快速加载, 每个文件加载完成后存入到加载完成数组中, * 显示到页面时完全按传入的顺