Select2套件搭配MVC專案

Aug 26, 2014

2 mins read

首先開一個MVC專案

[![](http://1.bp.blogspot.com/-S1UzcfC0Y1o/U_wrT7TrJtI/AAAAAAAABj8/lbIoB2J113k/s1600/01.%E9%96%8B%E6%96%B0%E5%B0%88%E6%A1%88.png)](http://1.bp.blogspot.com/-S1UzcfC0Y1o/U_wrT7TrJtI/AAAAAAAABj8/lbIoB2J113k/s1600/01.%E9%96%8B%E6%96%B0%E5%B0%88%E6%A1%88.png)
透過NuGet引用Select2.js套件
[![](http://3.bp.blogspot.com/-r0BD97ZmLPs/U_wrT5xcPTI/AAAAAAAABkE/LM86LOjUes0/s1600/02.%E5%BC%95%E7%94%A8%E5%8F%83%E8%80%83.png)](http://3.bp.blogspot.com/-r0BD97ZmLPs/U_wrT5xcPTI/AAAAAAAABkE/LM86LOjUes0/s1600/02.%E5%BC%95%E7%94%A8%E5%8F%83%E8%80%83.png)
因為MVC使用Bootstrap框架,所以需要搭配[select2-bootstrap.css](http://zh-tw.cdnjs.com/libraries/select2)來修正畫面的輸出
[![](http://1.bp.blogspot.com/-D8ZI1EUPzcI/U_wrTxzEHOI/AAAAAAAABkA/rzGEPLiMOzw/s1600/03.SelectBootstrap.png)](http://1.bp.blogspot.com/-D8ZI1EUPzcI/U_wrTxzEHOI/AAAAAAAABkA/rzGEPLiMOzw/s1600/03.SelectBootstrap.png)
新增一個HomeModel用來傳遞資料
public class HomeModel
{
    public IEnumerable<int> DataList { get; set; }
}
在Controler中透過ViewBag,傳入一個MultiSelectList
public ActionResult Index()
{
    this.ViewBag.DataList = new MultiSelectList(
        new List<SelectListItem>()
        {
            new SelectListItem{ Text="aaa", Value="1"},
            new SelectListItem{ Text="bbb", Value="2"},
            new SelectListItem{ Text="ccc", Value="3"},
        }, "Value", "Text");
return View();

}

在View中透過@Html.ListBoxFor輸出下拉選單

@using WebApplication1.ViewModels
@model HomeModel
@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<div class="form-horizontal”> <div class="form-group”> @Html.LabelFor(x => x.DataList, new { @class = “col-md-2 label-control” }) <div class="col-md-10”> @Html.ListBoxFor(x => x.DataList, null, new { @class = “form-control” }) </div> </div> </div>

@section scripts { <script type="text/javascript”> $("#DataList”).select2(); </script> }

Select2套件在MVC專案中的樣子

[![](http://4.bp.blogspot.com/-jLL1ZTwa2T0/U_wuzJYxXzI/AAAAAAAABkY/lo1mxsr9FoE/s1600/04.%E4%BD%BF%E7%94%A8%E5%A5%97%E4%BB%B6.png)](http://4.bp.blogspot.com/-jLL1ZTwa2T0/U_wuzJYxXzI/AAAAAAAABkY/lo1mxsr9FoE/s1600/04.%E4%BD%BF%E7%94%A8%E5%A5%97%E4%BB%B6.png)
如果是編輯頁面,初始化要有值的話,只要在model上面指定值
public ActionResult Edit(int? id)
{
    this.ViewBag.DataList = new MultiSelectList(
        new List<SelectListItem>()
    {
        new SelectListItem{ Text="aaa", Value="1"},
        new SelectListItem{ Text="bbb", Value="2"},
        new SelectListItem{ Text="ccc", Value="3"},
    }, "Value", "Text");
HomeModel model = new HomeModel { DataList = new int[] { 1, 3 } };
return View(model);

}

初始化的時後就有值了

[![](http://4.bp.blogspot.com/-e7HSmAPFZ5w/U_wvHzhWuGI/AAAAAAAABkg/pAJ7ku5ZnpU/s1600/05.%E7%B7%A8%E8%BC%AF%E9%A0%81%E9%9D%A2.png)](http://4.bp.blogspot.com/-e7HSmAPFZ5w/U_wvHzhWuGI/AAAAAAAABkg/pAJ7ku5ZnpU/s1600/05.%E7%B7%A8%E8%BC%AF%E9%A0%81%E9%9D%A2.png)

Sharing is caring!