利用Select2優化@Html.ListBoxFor顯示,學會用MultiSelectList

来源:http://www.cnblogs.com/hahaxi/archive/2016/12/27/6227427.html
-Advertisement-
Play Games

最近需要用到多選框,Asp.Net MVC自帶的@Html.ListBox或@Html.ListBoxFor的顯示效果太差,於是找到了Select2進行優化,並正式瞭解了多選框的操作方法。 首先介紹多選框的操作方法; 一、定義一個MultipleSelectModel 二、在Controller中實 ...


最近需要用到多選框,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()獲得選中值以','分隔。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 做了一單片機設計,要用C語言與彙編語言同時實現,現將這次設計的感受和收穫,還有遇到的問題寫下,歡迎感興趣的朋友交流想法,提出建議。 單片機設計:基於51單片機的99碼表設計 軟體環境:Proteus8.0 + Keil4 要求:1,開關按一下,數位管開始計時。2,按兩下,數位管顯示靜止。3,按三下, ...
  • rotatelogs 是 Apache 2.2 中自帶的管道日誌程式,參數如下(參見:http://lamp.linux.gov.cn/Apache/ApacheMenu/programs/rotatelogs.html) 語法 rotatelogs [ l ] logfile [ rotation ...
  • 步驟:1. 掛在光碟 配置本地源; 2. 安裝redhat_lsb; 3. 安裝chrome 1 mount /dev/cdrom /mnt cd /etc/yum.repos.d/ vi local.repo (這裡要添加內容的: [local_cd] gpgcheck=0 enable=1 ba ...
  • 右擊開始->屬性->開始菜單->自定義>點擊運行命令(選擇)->確定 ...
  • Sciter中的Tiscript腳本不是標準的Javascript,是對Javascript的擴展。所以在常用的編輯器和IDE上對於高亮的支持很不好。 不過在Sciter論壇中找到了在VSCode上的高亮支持。安裝方法比較簡單。 首先點此下載插件。 之後在Sciter插件所在目錄執行 然後在VSCo ...
  • 最近修改的一個需求要求捕獲鍵盤輸入的 Text,包括各種標點符合。 最開始想到的是 PreviewKeyDown 或者 PreviewKeyUp 這樣的鍵盤事件。 但是這兩個事件的對象 KeyEventArgs 不夠用,得依靠判斷 Key 來判斷輸入了什麼,然後再根據判斷寫死一個相應鍵位的 Text ...
  • 主要是基於達索軟體Composer Player、的基礎上做些二次開發。 public class ComposerToolBarSetting { public bool AntiAliasingOnIdle { get; set; }//抗鋸齒化 public bool AssySelectio ...
  • ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...