ãŸããã
ãã®èšäºã§ã¯ãç¬èªã®ã³ã³ãããŒã«ãäœæãããããASP.NET MVC 3.0ã®æ°ãããããžã§ã¯ãã®äžéšãšããŠäœ¿çšããå¯èœæ§ã«ã€ããŠèª¬æããŸãã 以äžã«æžãããŠãããã®ã¯ãã¹ãŠäœè
ã®èŠç¹ã§ãããåºãæ®åããŠããããŸãã¯äžè¬ã«åãå
¥ããããŠããã³ã³ãããŒã«ã®äœææ¹æ³ãšäžèŽããªãå Žåããããããæ¹å€ãã³ã¡ã³ããæè¿ããŸãã
ã¯ããã«
æãå¯èœæ§ãé«ãã®ã¯ã以åã«WinFormsãŸãã¯ASP .NET WebFormsã䜿çšããŠãããžã§ã¯ãã§äœæ¥ããŠããå€ãã®ãŠãŒã¶ãŒããASP .NET MVCãããžã§ã¯ãã®HTMLãã«ããŒãCheckBoxListãªã©ã®ã³ã³ãããŒã«ãäœæã§ããªãããšã§ããããŠãŒã¶ãŒãããã¡ã€ã«å
ãŸãã¯Habrahabrã«æ°ãããããã¯ãè¿œå ããéã«ãããŒã¿ãŸãã¯éæ§é åããŒã¿ãè€æ°éžæããŸãã ãã¡ãããåäžã®CheckBoxãŸãã¯CheckBoxForã®äœ¿çšãçŠæ¢ãã人ã¯ããŸãããããã®ãããªãã§ãã¯ããã¯ã¹ã®ã°ã«ãŒãã§äœæ¥ããã®ã䟿å©ã§ãã¡ã³ãããŒãç°¡åã«æ¡åŒµãç解ã§ããéè€ããä¿è·ãããã³ãŒãã¯ãå°æ¥ã®ãããžã§ã¯ãã§ææã䜿çšããäºå®ã®ããã°ã©ããŒã«ãšã£ãŠæåŸã®è³ªåã§ã¯ãããŸããã ãããŠãèŠèŠè¡šç€ºã®ã³ã³ãããŒã«ã«ããã€ãã®äŸ¿å©ãªãªãã·ã§ã³ãè¿œå ã§ããããšãèæ
®ãããšãäœæã®å¿
èŠæ§ããŸããŸãæããã«ãªããŸãã
æåŸã«ãµããžã§ã¯ããšãªã¢ã«é£ã³èŸŒãåã«ãåé¡ã®ã³ã³ãããŒã«ãäœæããã¢ã€ãã¢ã¯ã
httpïŒ//mvc.devexpress.comã®ãµã€ãã衚瀺ããåŸã«ã€ã³ã¹ãã¬ãŒã·ã§ã³ãåããããšã«æ³šæããããšæããŸãããããã ãã®èšäºãæ¿èªãããè¯å®çãªãã£ãŒãããã¯ãå¯ããããå Žåãã³ãã¥ããã£ã®ããã«é¢ããäžé£ã®èšäºã®äžéšãšããŠãµã€ãã§æ瀺ãããã³ã³ãããŒã«ã®ãããªãã¬ãã¥ãŒãšå®è£
ãå¯èœã§ãã
åæ
ãããããäœãããããšããŠããã®ããç解ããå¿
èŠããããŸãã ã³ã³ãããŒã«ã¯ãæž¡ãããããŒã¿ã³ã¬ã¯ã·ã§ã³ã衚瀺ã§ããCheckBoxesã®ã°ã«ãŒãã«ãã£ãŠè¡šç€ºããããã©ãŒã ããµãŒããŒã«éä¿¡ãããšãã«ã¢ãã«ãã€ã³ãã£ã³ã°ã®æŠå¿µã䜿çšãã次ã®è¡šç€ºèšå®ããããŸãã
- Layoutt-ã¯ã€ã€ãŒãã¬ãŒã ïŒdivãŸãã¯ããŒãã«å
ïŒ;
- æ¹å-åºåæ¹åïŒåçŽ/æ°Žå¹³ïŒ;
- RepeatColumns-åã®æ°ã
- htmlAttributes-CheckBoxã³ã³ããã«é©çšãããå±æ§ã
ãããžã§ã¯ãäœæ
空ã®ASP .NET MVC 3ãããžã§ã¯ããäœæãã
Indexã¡ãœãããšãã¥ãŒã§
DemoControllerã³ã³ãããŒã©ãŒãè¿œå ããŸãã



æå°éã®æºåãå®äºããããã³ã³ãããŒã«ã«çŽæ¥ç§»åããŸãã
CheckBoxListãè¿œå ãã
Controls.csãã¡ã€ã«ãšCheckBoxListã®å®è£
ããã¹ããã
éç Controlsã¯ã©ã¹ã䜿çšããŠã
Coreãã©ã«ããŒããããžã§ã¯ãã«ãŒãã«è¿œå ããŸãã

çŸæç¹ã§ã¯ã
éç㪠Controlsã¯ã©ã¹ã§ãHtmlãã«ããŒã®ç¬èªã®å®è£
ãæ¢ã«äœæã§ããŠãããããããã«å¿
èŠãªã³ãŒããè¿œå ããŸãã
public static MvcHtmlString CheckBoxList(this HtmlHelper helper) { return new MvcHtmlString("Hello, i'm your CheckBoxList!"); }
ãããŠã
Indexã®ãã¥ãŒã
DemoControllerã³ã³ãããŒã©ãŒã§åŒã³åºããŠã¿ãŠãã ããã
泚ïŒãã©ã°ã€ã³ã¢ã»ã³ããªããã³ã¹ã³ãŒãä»ããã¡ã€ã«ã«é¢ããèšäºã®ããã¹ãã«ã¯æå³çã«èšè¿°ããŠããŸããã ç§ãèšåããã«ãããè¡ãããšãã§ããããšãé¡ã£ãŠããŸãã ææãã䟡å€ã®ããå¯äžã®ããšã¯ãè¡<add namespace = "MVC3Controls_H.Core" />ããã¡ã€ã«/Views/web.configã«è¿œå ããããšã§ããMVC3Controls_H.Coreã®å Žåãããã¯CheckBoxListã䜿çšããéçã¯ã©ã¹ã®å Žæã§ããèŠçŽ ãåŒã³åºãã«ã¯ã
Index.cshtmlã«æ¬¡ã®è¡ãè¿œå ããŸãïŒæ°ãããã¥ãŒãè¿œå ãããšãã«Razor Engineãæå®ããå ŽåïŒïŒ
@Html.CheckBoxList()
ãããžã§ã¯ãã®ã«ãŒãã«ãã
Global.asaxãã¡ã€ã«ã§ãããã©ã«ãã§
Demoã³ã³ãããŒã©ãŒã®
Indexã¡ãœãããåŒã³åºãå¿
èŠãããããšã瀺ããŸãã
routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Demo", action = "Index", id = UrlParameter.Optional } // Parameter defaults );
ãã¹ãŠã®ã¢ã¯ã·ã§ã³ãæ£ããå®è¡ãããå Žåã次ã®å
容ã®ããŒãžã衚瀺ãããŸãã

çŽ æŽãããã 次ã«ãCheckBoxListã®æ§é ã®å®è£
ã«æ»ããŸãã
CheckBoxListæ§é ã®å®è£
ãŸãã
Controls.csãã¡ã€ã«ã«è¡šç€ºã®èšå®ãè¿œå ããŸãã ãã®å Žåããããã¯
åæåã®3ã€ã®ãªããžã§ã¯ãã«ãªããŸãã
public enum Layoutt { Table = 0, Flow = 1 } public enum Direction { Horizontal = 0, Vertical = 1 } public enum RepeatColumns { OneColumn = 1, TwoColumns = 2, ThreeColumns = 3, FourColumns = 4, FiveColumns = 5 }
ãŸãã
CheckBoxList_Settingsã¯ã©ã¹ã§ã¯ãã³ã³ãããŒã«ãžã®åŒã³åºãã§ããããæž¡ããŸãã
public class CheckBoxList_Settings { public string cbl_Name = "SelectedCheckBoxListItems"; public Layoutt cbl_Layout = Layoutt.Table; public Direction cbl_Direction = Direction.Horizontal; public RepeatColumns cbl_RepeatColumns = RepeatColumns.FiveColumns; }
ããã©ã«ãèšå®ãšããŠãã¯ã€ã€ãŒãã¬ãŒã ããŒãã«ãåºåæ¹åãæ°Žå¹³ãéžæãã5åã®åœ¢åŒã§è¡šç€ºããŸãã
cbl_Nameããããã£ã«ã€ããŠã¯åŸã§èª¬æããŸãã
CheckBoxListã®ã³ã³ã¹ãã©ã¯ã¿ãŒãå€æŽããŠãã¿ã€ãIDictionary <stringãint>ã®ã³ã¬ã¯ã·ã§ã³ãšèšå®ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãåãå
¥ããŸãã
public static MvcHtmlString CheckBoxList(this HtmlHelper helper, IDictionary<string, int> items, CheckBoxList_Settings settings) { return new MvcHtmlString("Hello, i'm your CheckBoxList!"); }
ãã¥ãŒã§ã¯ãèŠçŽ ãåŒã³åºãã ãã§ãªãã2ã€ã®ãã©ã¡ãŒã¿ãŒãæž¡ãå¿
èŠããããšããçµè«ã«éããŸãããããã«ã¯ãã³ã³ãããŒã©ãŒã®
Indexã¡ãœããã«ããŒã¿ã³ã¬ã¯ã·ã§ã³ãè¿œå ããŸãã
Dictionary<string, int> languages = new Dictionary<string, int> { {"ActionScript", 0}, {"Delphi", 1}, {"GO", 2}, {"Lua", 3}, {"Prolog", 4}, {"Basic", 5}, {"Eiffel", 6}, {"Haskell", 7}, {"Objective-C", 8}, {"Python", 9}, {"C", 10}, {"Erlang", 11}, {"Java", 12}, {"Pascal", 13}, {"Ruby", 14}, {"C++", 15}, {"F#", 16}, {"JavaScript", 17}, {"Perl", 18}, {"Scala", 19}, {"C#", 20}, {"Fortran", 21}, {"Lisp", 22}, {"PHP", 23} };
ãããŠããã®ããŒã¿ãã¢ãã«ãšããŠãã¥ãŒã«æäŸããŸãã
return View(languages);
ãã¥ãŒã®ã³ãŒãã§ã¯ããã®ã¢ãã«ãããŒã¿åèŸæž<stringãint>ã§ããããšã瀺ããCheckBoxListãåŒã³åºããŸãã
@model Dictionary<string, int> @using MVC3Controls_H.Core @{ ViewBag.Title = "Index"; } <h2>Index</h2> @Html.CheckBoxList(Model, new CheckBoxList_Settings { cbl_Name = "SelectedCheckBoxListItems", cbl_Layout = Layoutt.Table, cbl_Direction = Direction.Horizontal, cbl_RepeatColumns = RepeatColumns.FiveColumns })
ãããžã§ã¯ããéå§ãããšã銎æã¿ã®ããåãã¬ã³ãŒãã衚瀺ãããŸãã

çŸåšã®ã¢ããªã±ãŒã·ã§ã³æ§é ã®åæ
å
ã«é²ãåã«ãã¢ããªã±ãŒã·ã§ã³ã®çŸåšã®æ§é ãç解ããå Žåã«ãã£ãŠã¯å€æŽããå¿
èŠããããŸãã ããã§ç§ãèãããããšã¯æ¬¡ã®ãšããã§ãã
- çŸæç¹ã§ã¯ãDictionary <stringãint>åã®ã¢ãã«ããã¥ãŒã«æž¡ããŠããŸãããã»ãšãã©ã®å Žåãã¢ããªã±ãŒã·ã§ã³ã¯ã³ã³ãããŒã©ãŒããéä¿¡ãããä»ã®ããŒã¿ã䜿çšããŸããããŒãžãŸãã¯ãšã³ãã£ãã£ïŒç»é²ããã©ãŒã ïŒã®ã¡ã¿ã¿ã°ïŒã¿ã€ãã«ã説æïŒæ³šæïŒ-ãããã£ãŠãç§ãã¡ã¯ã³ã³ãããŒã«ã®ããã ãã«ã¢ãã«ãç¬å ããã¹ãã§ã¯ãããŸããã ããã«ããŠãŒã¶ãŒãã©ããã§éžæããèŠçŽ ã®å€ãä¿åããã³åä¿¡ããå¿
èŠããããŸãã
- æéãçµã€ã«ã€ããŠããããžã§ã¯ãã§CheckBoxListããŸããŸãå€ãã®ãã¥ãŒã§åŒã³åºãããããæç¹ã§æ°ãããã©ã¡ãŒã¿ãŒãè¿œå ããããæ¢åã®ãã©ã¡ãŒã¿ãŒãå€æŽããå¿
èŠããããšããŸãã ãã®å Žåãã³ã³ãããŒã«ãžã®ãã¹ãŠã®åŒã³åºãïŒãã¹ãŠã®ãããžã§ã¯ããã¥ãŒã§ïŒãå€æŽããå¿
èŠããããŸãããããã¯ããŸã䟿å©ã§ã¯ãããŸããã
äžèšãããå¿
èŠãªãã®ã¯æ¬¡ã®ãšããã§ãã
- ãã¬ãŒã³ããŒã·ã§ã³çšã®ã¢ãã«ïŒViewModelïŒãè¿œå ããä»ã®ããŒã¿ãšãšãã«ããã®ã¢ãã«ã®äžéšãšããŠCheckBoxList'eã«è¡šç€ºããã³ã¬ã¯ã·ã§ã³ãæž¡ããŸãã
- ã³ã³ãããŒã«ã®åŒã³åºãããã¥ãŒããéšåãã¥ãŒã«è»¢éããŸãããã®ãããã³ã³ã¹ãã©ã¯ã¿ãŒãŸãã¯ãã©ã¡ãŒã¿ãŒãå€æŽãããå Žåããããžã§ã¯ãã§äœ¿çšããããã¹ãŠã®èŠçŽ ã®åŒã³åºãã1ãæã§å€æŽããå¿
èŠããããŸãã
- ã³ã³ãããŒã«ã®å¥ã®ããŒã¿ã¢ãã«ã§éä¿¡ãããå€ãCheckBoxListã«è»¢éãããããéšåãã¥ãŒã«è»¢éããŠãèŠçŽ åŒã³åºãã®å€æŽãããã¥ãŒãã§ããéãåé¢ããŸãã
泚ïŒãã ããã¢ããªã±ãŒã·ã§ã³ã³ãŒãã®èšè¿°ãéå§ããåã«ããããã®è³ªåãä»ã®å€ãã®è³ªåãèæ
®ã«å
¥ããŠãèªåããå¿
èŠããããŸãã ãã®èšäºã¯ãåããŠäŒŒããããªããšãããããšãã人ã察象ã«ããŠããŸãããã®åŸãäžè²«ããŠè©Šè¡é¯èª€ãç¹°ãè¿ããŠè§£æ±ºçãå°ããŠãããŸãããã¥ãŒã¢ãã«ã®è¿œå
ãã¬ãŒã³ããŒã·ã§ã³ã¢ãã«ã¯ããã®äžã®ããŒã¿ãéä¿¡ããã ãã§ãªããåä¿¡ããã®ã«ã圹ç«ã€ãããéä¿¡ãããã³ã¬ã¯ã·ã§ã³ã«å ããŠãéžæããèŠçŽ ã®é
åãè¿œå ããå¿
èŠããããŸãã
ViewModelsãã©ã«ããŒã
Modelsãã©ã«ããŒã«è¿œå ãã次ã«ç€ºãããã«
ViewModel_Index.csãã¡ã€ã«ã
ViewModelsã«è¿œå ããŸãã

ãã¥ãŒã¢ãã«ã®ã³ãŒãïŒ
public class ViewModel_Index { public IDictionary<string, int> Languages { get; set; } public int[] SelectedCheckBoxListItems { get; set; } }
DemoController 'a
ã®ã€ã³ããã¯ã¹ã¡ãœããã¯æ¬¡ã®ããã«å€æŽãããŸãã
public ActionResult Index() { Dictionary<string, int> languages = new Dictionary<string, int> { {"ActionScript", 0}, {"Delphi", 1}, {"GO", 2}, {"Lua", 3}, {"Prolog", 4}, {"Basic", 5}, {"Eiffel", 6}, {"Haskell", 7}, {"Objective-C", 8}, {"Python", 9}, {"C", 10}, {"Erlang", 11}, {"Java", 12}, {"Pascal", 13}, {"Ruby", 14}, {"C++", 15}, {"F#", 16}, {"JavaScript", 17}, {"Perl", 18}, {"Scala", 19}, {"C#", 20}, {"Fortran", 21}, {"Lisp", 22}, {"PHP", 23} }; ViewModel_Index _ViewModel_Index = new ViewModel_Index { Languages = languages }; return View(_ViewModel_Index); }
ã³ã³ãããŒã©ãŒã§éä¿¡ãããã¢ãã«ãå€æŽãããããé¢é£ä»ãããããã¥ãŒã§ããããè¡ãå¿
èŠããããŸãã
@using MVC3Controls_H.Models.ViewModels @using MVC3Controls_H.Core @model ViewModel_Index @{ ViewBag.Title = "Index"; } <h2>Index</h2> @Html.CheckBoxList(Model.Languages, new CheckBoxList_Settings { cbl_Name = "SelectedCheckBoxListItems", cbl_Layout = Layoutt.Table, cbl_Direction = Direction.Horizontal, cbl_RepeatColumns = RepeatColumns.FiveColumns })
ãããã£ãŠãã³ã³ãããŒã«ã®ããŒã¿ã³ã¬ã¯ã·ã§ã³ã«å ããŠä»ã®äœããããŒãžã«è»¢éããå¿
èŠãããå Žåã¯ããã¥ãŒã¢ãã«
/Models/ViewModels/ViewModels_Index.csãå€æŽïŒæ°ããããããã£ãè¿œå ïŒããåæåãè¿œå ããã ãã§ãããå®è¡ã§ããŸããã³ã³ãããŒã©ã¡ãœããã§ã
CheckBoxListãžã®åŒã³åºããã«ãã»ã«åãã
æåã®èšäºã§ã¯ãä»ã®ããã€ãã®ç®çã®ããã«ãæ¡åŒµã¡ãœãããåŒã³åºãããã«ãã§ã«åæ§ã®ã¹ããŒã ãé©çšããŸããã çŸåšã®ãããžã§ã¯ãã§ã¯ãCheckBoxListãPartial Viewã«åŒã³åºãããã«ãPartialãã©ã«ããŒã
/ Viewsãã©ã«ããŒã«è¿œå ãã
Controlsãã©ã«ããŒã
Controlsãã©ã«ããŒã«è¿œå ããæ°ããPartial
CheckBoxList.cshtmlãã¥ãŒã
Controlsãã©ã«ããŒã«è¿œå ããŸãã

ã¢ããªã±ãŒã·ã§ã³ã®æ§é ã¯æ¬¡ã®ãšããã§ãã

CheckBoxListã®ä»£ããã«Partial ViewãåŒã³åºããŠã
Indexãã¥ãŒãå€æŽããŸãã
@using MVC3Controls_H.Models.ViewModels @using MVC3Controls_H.Core @model ViewModel_Index @{ ViewBag.Title = "Index"; } <h2>Index</h2> @Html.Partial("~/Views/Partial/Controls/CheckBoxList.cshtml")
CheckBoxListã®ããŒã¿ã¢ãã«ã®è¿œå
ã³ã³ãããŒã«ã®åŒã³åºããããŒã·ã£ã«ãã¥ãŒã«è»¢éããäºå®ãªã®ã§ãããã®ããŒã¿ãããã«è»¢éããå¿
èŠããããŸãããããã£ãŠãããŒã¿ã¢ãã«ãè¿œå ããå¿
èŠããããŸãã
Modelsãã©ã«ããŒã§ãæ°ãã
CheckBoxListãã©ã«ããŒãäœæãã
CheckBoxList_Model.csã¯ã©ã¹ãè¿œå ã
ãŸã ã
public class CheckBoxList_Model { public IDictionary<string, int> items; public CheckBoxList_Settings settings; }
Indexãã¥ãŒã§Partial ViewåŒã³åºããå€æŽããè¿œå ãããã¢ãã«ãããŒã¿ãšããŠæž¡ããŸãã
@Html.Partial("~/Views/Partial/Controls/CheckBoxList.cshtml", new CheckBoxList_Model { items = Model.Languages, settings = new CheckBoxList_Settings { cbl_Name = "SelectedCheckBoxListItems", cbl_Layout = Layoutt.Table, cbl_Direction = Direction.Horizontal, cbl_RepeatColumns = RepeatColumns.FiveColumns } })
ãã®ã¢ãã«ã
/Views/Partial/Controls/CheckBoxList.cshtmlã®ããŒã·ã£ã«ãã¥ãŒã®ã¢ãã«ãšããŠå®çŸ©ããã³ã³ãããŒã«ã«å€ãåŒã³åºããŠæž¡ããŸãã
@model CheckBoxList_Model @Html.CheckBoxList(Model.items, Model.settings)
ããã§ã¢ããªã±ãŒã·ã§ã³æ§é ã®çµããã§ãã ãã®äž»ãªç¹ãèæ
®ããŠãã ããã

è¯ããã¥ãŒã¹ã¯ãããããã¢ããªã±ãŒã·ã§ã³ã®æ§é ãå®æããããšã§ããæªããã¥ãŒã¹ã¯ãCheckBoxListã«ã€ããŠãŸã äœãæžããŠããªãããšã§ãã
CheckBoxListã®å®è£
ãŸããèŠçŽ ãæ§ç¯ããããã®äžè¬çãªã¢ã«ãŽãªãºã ã«ã€ããŠèª¬æããŸãã
1.
cbl_Layoutãã©ã¡ãŒã¿ãŒã«åºã¥ããã¬ãŒãã³ã°HTMLã¿ã°ïŒããŒãã«ãdivïŒã®éžæã
2.
cbl_RepeatColumnsãã©ã¡ãŒã¿ãŒãšã³ã¬ã¯ã·ã§ã³å
ã®ã¬ã³ãŒãæ°ã«åºã¥ããŠãã³ã¬ã¯ã·ã§ã³ã®ç¹°ãè¿ãåæ°ã決å®ããŸãã
3.çŸåšã®å埩ã®ã·ãªã¢ã«çªå·ã«åºã¥ããŠã³ã¬ã¯ã·ã§ã³ããã¢ã€ãã ãéžæããããã®æ¡ä»¶ã®åœ¢æïŒ
3.1ã åºåãæ°Žå¹³ã§ãåæ°ã4ã®å Žåãæåã®è¡ã¯ã³ã¬ã¯ã·ã§ã³ã®æåã®4ã€ã®èŠçŽ ã次ã®4ã€ã®ãã¡ã®2çªç®ã®èŠçŽ ãªã©ã§æ§æãããå¿
èŠããããŸãã
[0 1 2 3] - 0 [4 5 6 7] - 1 [8 9 10 11]
3.2ã åºåãåçŽã«å®è¡ãããåæ°ã4ã§èŠçŽ ã®åèšæ°ã24ã§ããå Žåãæåã®è¡ã¯ã³ã¬ã¯ã·ã§ã³ã®6çªç®ã®èŠçŽ ããšãå埩æ°ã®2çªç®+ 6ãªã©ã§æ§æãããå¿
èŠããããŸãã
[0 6 12 18] - 0 [1 7 13 19] - 1 [2 8 14 20] [3 9 15 21] [4 10 16 22] [5 11 17 23]
3.3ã é€ç®ã®æ®ãã®éšåã«ã€ããŠã®å埩åæ°ïŒèŠçŽ æ°/åæ°ïŒãèšç®ãããšãã¯å¿ããªãã§ãã ããïŒ= 0.ãã®å Žåãã³ã¬ã¯ã·ã§ã³å
šäœã衚瀺ããã«ã¯è¿œå ã®å埩ãå¿
èŠã§ãã
[0 1 2 3] - 0 [4 5 6 7] - 1 [8 9 10 11] [12 13 - -]
4.ãã¬ãŒãã³ã°ã¿ã°ïŒdivãtableïŒã«å¿ããŠãåå埩ã«é©ãããµã³ãã«ã®æååã®åœ¢æïŒ
4.1ã divã®å Žåãè¡æ«ã®ãã€ãã³ã®ã¿ã«ãªããŸãã
4.2ã ããŒãã«ã®å Žåãããã¯æ¬¡ã®ãšããã§ãã
4.2.1ã è¡ã®å
é ã ã©ãã« èŠçŽ ãåæããéçšã§ã è¡æ«ã«ã
5.ãã¬ãŒãã³ã°ã¿ã°ãéããŠãçæãããæååããã¥ãŒã«è¿ããŸãã
èšäºã®äž»ãªã¢ã€ãã¢ã¯ã³ãŒããšã¢ã«ãŽãªãºã ã§ã¯ãªããããæ©èœã®äžéšã®ã¿ã玹ä»ããŸããèšäºã®æåŸã«ãããžã§ã¯ããããŠã³ããŒãããŠãCheckBoxããŒã¯ã¢ããã®åœ¢æã«ã€ããŠããå°ã詳ãã説æããŸãã
HTMLããŒã¯ã¢ããCheckBox'aã®åœ¢æãšã¢ãã«ãã€ã³ãã£ã³ã°
äžè¬ã«ãããã¯ã³ã¬ã¯ã·ã§ã³ã®èŠçŽ ãšã³ã³ãããŒã«ã®èšå®ãæž¡ãããæãåçŽãªã³ãŒãã§ãã ããããããã®ã³ãŒãã®äž»ãªããšã¯ãnameå±æ§ã«CheckBoxListå
šäœã®ååãå²ãåœãŠãããããšã§ãã ããã¯ãå°æ¥ã
DemoControllerã³ã³ãããŒã©ãŒã®
Indexã¡ãœããã§ãµãŒããŒåŽã§ããŒã¿ãåä¿¡ãããšãã«ãéžæãããå€ã圢æãããé
åã®åœ¢åŒã§ååŸã§ããããã«ããããã§ã-å°ãåŸã§äŸã瀺ããŸãã
public static string GenerateHtmlMarkup_CheckBox(KeyValuePair<string, int> item, CheckBoxList_Settings settings) { TagBuilder tagBuilder = new TagBuilder("input"); tagBuilder.MergeAttribute("type", "checkbox"); tagBuilder.MergeAttribute("name", settings.cbl_Name); tagBuilder.MergeAttribute("value", item.Value.ToString()); return tagBuilder.ToString(TagRenderMode.SelfClosing); }
ã©ãã«ã®HTMLããŒã¯ã¢ãã
public static string GenerateHtmlMarkup_Label(KeyValuePair<string, int> item) { TagBuilder tagBuilder = new TagBuilder("label"); tagBuilder.SetInnerText(item.Key); return tagBuilder.ToString(TagRenderMode.Normal); }
å埩åæ°ã®èšç®ïŒ
int iMod = items.Count % (int)settings.cbl_RepeatColumns; int iterationsCount = items.Count / (int)settings.cbl_RepeatColumns + (iMod == 0 ? 0 : 1);
åå埩ã®ãµã³ããªã³ã°æ¡ä»¶ïŒ
foreach (KeyValuePair<string, int> item in items.Where((item, index) => settings.cbl_Direction == Direction.Horizontal ? index / (int)settings.cbl_RepeatColumns == i : (index - i) % iterationsCount == 0))
ããã§ãiã¯å埩åæ°ã§ãã
æ°Žå¹³ã«è¡šç€ºãããšããåæ°== iã§å²ã£ããšãã®ã€ã³ããã¯ã¹ãæã€èŠçŽ ãåããŸãïŒ
[0 1 2 3] [4 5 6 7] [8 9 10 11]
åçŽæ¹åã«è¡šç€ºããå Žåããã®ã€ã³ããã¯ã¹ãšçŸåšã®å埩ãå埩æ°== 0ã§é€ç®ããæ®ãã®èŠçŽ ãååŸããŸãã
[0 6 12 18] [1 7 13 19]
ãã«ã¹ãã§ãã¯
æçµçã«åŸããã3ã€ã®CheckBoxListã®äŸãèŠãŠã¿ãŸãããã
<h2>Index</h2> @using (Html.BeginForm()) { @Html.Partial("~/Views/Partial/Controls/CheckBoxList.cshtml", new CheckBoxList_Model { items = Model.Languages, settings = new CheckBoxList_Settings { cbl_Name = "SelectedCheckBoxListItems", cbl_Layout = Layoutt.Table, cbl_Direction = Direction.Horizontal, cbl_RepeatColumns = RepeatColumns.FiveColumns }, htmlAttributes = new { @cellpadding = "0", @cellspacing = "0" } }) <br /> @Html.Partial("~/Views/Partial/Controls/CheckBoxList.cshtml", new CheckBoxList_Model { items = Model.Languages, settings = new CheckBoxList_Settings { cbl_Name = "SelectedCheckBoxListItemsTwo", cbl_Layout = Layoutt.Flow, cbl_Direction = Direction.Vertical, cbl_RepeatColumns = RepeatColumns.ThreeColumns } }) <br /> @Html.Partial("~/Views/Partial/Controls/CheckBoxList.cshtml", new CheckBoxList_Model { items = Model.Languages, settings = new CheckBoxList_Settings { cbl_Name = "SelectedCheckBoxListItemsThree", cbl_Layout = Layoutt.Flow, cbl_Direction = Direction.Horizontal, cbl_RepeatColumns = RepeatColumns.TwoColumns } }) <br /> <input type="submit" value="send" /> }

éžæããå€ãååŸããã«ã¯ãCheckBoxListsã«æž¡ãååãæã€3ã€ã®é
åã
ViewModel_Indexãã¥ãŒã®ã¢ãã«ã«è¿œå ããå¿
èŠããããŸãã
public class ViewModel_Index { public IDictionary<string, int> Languages { get; set; } public int[] SelectedCheckBoxListItems { get; set; } public int[] SelectedCheckBoxListItemsTwo { get; set; } public int[] SelectedCheckBoxListItemsThree { get; set; } }
æçš¿ãªã¯ãšã¹ããåŠçãã
ã€ã³ããã¯ã¹ã³ã³ãããŒã©ãŒã¡ãœãããè¿œå ããŸãã
[HttpPost] public ActionResult Index(ViewModel_Index model) {
ãã¬ãŒã¯ãã€ã³ããèšå®ããããçµæãèŠãŠã¿ãŸãããã

ã³ãŒãã®è€è£œãè¡šçŸã¢ãã«ãã¡ã³ããã³ã¹ã«ãŸã£ããé¢å¿ããªãå Žåã¯ããã¥ãŒã§CheckBoxListèªäœãçŽæ¥åŒã³åºããŠããµãŒããŒäžã®éžæãããå€ãé
åã§çŽæ¥ååŸã§ããŸãïŒãã ããCheckBoxListã®ååãšåãå
¥ãããããã©ã¡ãŒã¿ãå¿ããªãã§ãã ãããµãŒããŒäžã®åãã§ããå¿
èŠããããŸãïŒïŒ



ããŠãç§ãã¡ãèšç»ããããšãå®å
šã«çµããã®ã§ãæåŸã¯æ®ã£ãŠããŸãã
ãªããžã§ã¯ãhtmlAttributesã®äŸã䜿çšããŠãæ°ããããããã£ã§ã³ã³ãããŒã«ãæ¡åŒµããããšãæ€èšããŠãã ããã
CheckBoxListã®æ¡åŒµ
æ°ããããããã£ãèŠçŽ ã®ã³ãŒãã«æž¡ãã«ã¯ãã³ã³ã¹ãã©ã¯ã¿ãŒããæåã®åŒã³åºãïŒãŸãã¯ããã®éïŒã«ç§»åããå¿
èŠããããŸãã ãã¹ãŠã¯
Controls.csã®ã³ã³ã¹ãã©ã¯ã¿ãŒããå§ãŸããŸããæ°ãããªããžã§ã¯ãhtmlAttributesãã©ã¡ãŒã¿ãŒãè¿œå ããŸãã
public static MvcHtmlString CheckBoxList(this HtmlHelper helper, IDictionary<string, int> items, CheckBoxList_Settings settings, object htmlAttributes)
ã³ã³ã¹ãã©ã¯ã¿ãŒã¯ãååã
CheckBoxList.cshtmlã®ããŒã·ã£ã«ãã¥ãŒã§åŒã³åºãã
ãŸã ã CheckBoxListã¢ãã«ã®æ°ããããããã£ãè¿œå ããŸãã
public class CheckBoxList_Model { public IDictionary<string, int> items; public CheckBoxList_Settings settings; public object htmlAttributes; }
ããŒã·ã£ã«ãã¥ãŒã§åŒã³åºãã«æž¡ããŸãïŒ
å®å
ïŒ
@model CheckBoxList_Model @Html.CheckBoxList(Model.items, Model.settings)
åŸïŒ
@model CheckBoxList_Model @Html.CheckBoxList(Model.items, Model.settings, Model.htmlAttributes)
ã€ã³ããã¯ã¹ãã¥ãŒã§ããããã£ã®åæåãè¿œå ããèŠçŽ ã®ã³ãŒããè£å®ããããšã¯æ®ããŸãã
@Html.Partial("~/Views/Partial/Controls/CheckBoxList.cshtml", new CheckBoxList_Model { items = Model.Languages, settings = new CheckBoxList_Settings { cbl_Name = "SelectedCheckBoxListItemsThree", cbl_Layout = Layoutt.Table, cbl_Direction = Direction.Vertical, cbl_RepeatColumns = RepeatColumns.FourColumns }, htmlAttributes = new { @border = "3", style = "color: Grey; border-style:dashed;" } })
ã¯ã€ã€ãã¬ãŒã éžæã³ãŒãïŒããŒãã«ãdivïŒïŒ
public static TagBuilder GenerateHtmlMarkup_OuterTag(Layoutt cbl_Layout, IDictionary<string, object> htmlAttributes) { ... TagBuilder tagBuilder = new TagBuilder(htmlTag); tagBuilder.MergeAttributes(htmlAttributes); ... }
以äžã«ç€ºãããã«ããã¹ãŠãæ©èœããŸãã

ãããã«
çµè«ãšããŠãç§ãã¡ãããããšãç解ããããšæããŸãã
- Html ASP .NET MVCãã«ããŒã«åºã¥ããŠç¬èªã®ã³ã³ãããŒã«ãäœæã䜿çšãæ¡åŒµããå¯èœæ§ãæ€èšããŸããã
- ã³ã³ãããŒã«ãããã«éçºããããã®ãããžã§ã¯ããã¬ãŒã ã¯ãŒã¯ãäœæããŸããã
- åæ©èœãŠãããã®è²¬ä»»ãåå²ããŠãWebã¢ããªã±ãŒã·ã§ã³ã®æ§é ãå®è£
ããŸããã
- ç¬èªã®ã³ã³ãããŒã«ã®äœæã§ç«¶åãããã®ããããµã€ãã«ã€ããŠåŠã³ãŸããã
ææãªã¹ã
1.http ïŒ
//mvc.devexpress.com/Editors/CheckBoxList2.
ASP.NET MVCãã©ãŒã ã§ãã§ãã¯ããã¯ã¹ãåŠçããæ¹æ³3.
ãããžã§ã¯ãã®ãœãŒã¹ã³ãŒã