рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛
рдпрд╣ рд▓реЗрдЦ ASP.NET MVC 3.0 рдкрд░ рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдирд╛ рдирд┐рдпрдВрддреНрд░рдг рдмрдирд╛рдиреЗ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдЧрд╛ред рдиреАрдЪреЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╕рдм рдХреБрдЫ рд▓реЗрдЦрдХ рдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд╡реНрдпрд╛рдкрдХ рдпрд╛ рдЖрдо рддреМрд░ рдкрд░ рд╕реНрд╡реАрдХреГрдд рддрд░реАрдХреЛрдВ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрд▓реЛрдЪрдирд╛ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред
рдкрд░рд┐рдЪрдп
рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдкрд╣рд▓реЗ рд╕реЗ WinForms рдпрд╛ ASP .NET WebForms рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдиреЗ рджреЗрдЦрд╛ рдХрд┐ ASP .NET MVC рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ HTML рд╕рд╣рд╛рдпрдХреЛрдВ рдиреЗ рдЪреЗрдХрдмреЙрдХреНрд╕рд▓рд┐рд╕реНрдЯ рдЬреИрд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХреА, рдЬреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рдЬрдЯрд┐рд▓ рд░реВрдкреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреА рд╣реИред рдбреЗрдЯрд╛ рдпрд╛ рдЕрд╕рдВрд░рдЪрд┐рдд рдбреЗрдЯрд╛ рдХреЗ рдХрдИ рдЪрдпрди рдХреЗ рд╕рд╛рде, рдЪрд╛рд╣реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реЛ рдпрд╛ рдЬрдм рдПрдХ рдирдП рд╡рд┐рд╖рдп рдХреЛ рдЬреЛрдбрд╝рдХрд░ рд╣реИрдмрд░рд╣реИрдмред рдмреЗрд╢рдХ, рдХреЛрдИ рднреА рдПрдХрд▓ рдЪреЗрдХрдмреЙрдХреНрд╕ рдпрд╛ рдЪреЗрдХрдмреЙрдХреНрд╕рдлреЙрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдордирд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреЗ рдРрд╕реЗ рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ рдФрд░ рдХреЛрдб рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓, рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдФрд░ рдЕрдиреБрд▓рд┐рдкрд┐ рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ, рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдкреНрд░рд╢реНрди рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ рднрд╡рд┐рд╖реНрдп рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЕрдкрдиреА рдЙрдкрд▓рдмреНрдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВред ред рдФрд░ рдЕрдЧрд░ рд╣рдо рдЗрд╕ рдмрд╛рдд рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдЗрд╕рдХреЗ рджреГрд╢реНрдп рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддреА рд╣реИред
рдЕрдВрдд рдореЗрдВ рд╡рд┐рд╖рдп рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЧреЛрддрд╛ рд▓рдЧрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рд╕рд╛рдЗрдЯ
http://mvc.devexpress.com рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рдж рдкреНрд░рд╢реНрди рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдмрдирд╛рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкреНрд░реЗрд░рд┐рдд рд╣реБрдЖ, рдЬрд┐рд╕рдореЗрдВ рдХрдИ рд╕реБрдВрджрд░ рдФрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдирд┐рдпрдВрддреНрд░рдг рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреБрдЫ рджреЗрдЦрдиреЗ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ рдЕрджреНрднреБрддред рдпрджрд┐ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдЕрдиреБрдореЛрджрд┐рдд рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдореБрджрд╛рдп рдХреЗ рд╣рдм рдХреЗ рд▓рд┐рдП рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╛рдЗрдЯ рдкрд░ рдкреНрд░рд╕реНрддреБрдд рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреА рдЖрдЧреЗ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдВрднрд╡ рд╣реИред
рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рдирд┐рдпрдВрддреНрд░рдг рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреЗ рдПрдХ рд╕рдореВрд╣ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдкрд╛рд╕ рджрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╕рд░реНрд╡рд░ рдХреЛ рдлрд╝реЙрд░реНрдо рд╕рдмрдорд┐рдЯ рдХрд░рддреЗ рд╕рдордп рдореЙрдбрд▓ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдирд┐рдореНрди рдкреНрд░рджрд░реНрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реЛрддреА рд╣реИрдВ:
- рд▓реЗрдЖрдЙрдЯ - рд╡рд╛рдпрд░рдлреНрд░реЗрдо (рдПрдХ рдбрд┐рд╡ рдпрд╛ рдЯреЗрдмрд▓ рдореЗрдВ);
- рджрд┐рд╢рд╛ - рдЙрддреНрдкрд╛рджрди рдХреА рджрд┐рд╢рд╛ (рдКрд░реНрдзреНрд╡рд╛рдзрд░ / рдХреНрд╖реИрддрд┐рдЬ);
- рдкреБрдирд░рд╛рд╡рд░реНрддрди рдХреЙрд▓рдо - рдХреЙрд▓рдо рдХреА рд╕рдВрдЦреНрдпрд╛;
- htmlAttributes - рдЪреЗрдХрдмреЙрдХреНрд╕ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд┐рд░реНрдорд╛рдг
рдПрдХ рдЦрд╛рд▓реА ASP.NET MVC 3 рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдФрд░
рдЗрдВрдбреЗрдХреНрд╕ рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдПрдХ
рдбреЗрдореЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдирд┐рдпрдВрддреНрд░рдХ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕реЗ рджреЗрдЦреЗрдВ:



рдиреНрдпреВрдирддрдо рддреИрдпрд╛рд░реА рдкреВрд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╕реАрдзреЗ рдирд┐рдпрдВрддреНрд░рдг рдкрд░ рдЬрд╛рдПрдВред
рдПрдХ CheckBoxList рдЬреЛрдбрд╝рдирд╛
Controls.cs рдлрд╝рд╛рдЗрд▓ рдФрд░
рд╕реНрдерд┐рд░ рдирд┐рдпрдВрддреНрд░рдг рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рдореЗрдВ
рдХреЛрд░ рдлрд╝реЛрд▓реНрдбрд░ рдЬреЛрдбрд╝реЗрдВ, рдЬреЛ рд╣рдорд╛рд░реЗ рдЪреЗрдХрдмреЙрдХреНрд╕рд▓рд┐рд╕реНрдЯ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдореЗрдЬрдмрд╛рдиреА рдХрд░реЗрдЧрд╛ред

рдлрд┐рд▓рд╣рд╛рд▓,
рд╕реНрдерд┐рд░ рдирд┐рдпрдВрддреНрд░рдг рд╡рд░реНрдЧ рдореЗрдВ, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА Html рд╕рд╣рд╛рдпрдХреЛрдВ рдХреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХреЛрдб рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ:
public static MvcHtmlString CheckBoxList(this HtmlHelper helper) { return new MvcHtmlString("Hello, i'm your CheckBoxList!"); }
рдФрд░
рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд╣рдорд╛рд░реЗ рд╡рд┐рдЪрд╛рд░ рдореЗрдВ,
рдбреЗрдореЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
рдиреЛрдЯ: рдореИрдВ рдЬрд╛рдирдмреВрдЭрдХрд░ рд▓реЗрдЦ рдХреЗ рдкрд╛рда рдореЗрдВ рдкреНрд▓рдЧ-рдЗрди рдЕрд╕реЗрдВрдмрд▓реА рдФрд░ рд╕реНрдХреЛрдк рд╡рд╛рд▓реА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдк рдореЗрд░реЗ рдЙрд▓реНрд▓реЗрдЦ рдХреЗ рдмрд┐рдирд╛ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреЗрд╡рд▓ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд▓рд╛рдЗрди рдХреЛ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИ <рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд╛рдо рдЬреЛрдбрд╝реЗрдВ = "MVC3Controls_H.Core" /> MVC3Controls -H.Core рдкрд░ рдлрд╝рд╛рдЗрд▓ /Views/web.config, рдЬрд╣рд╛рдВ рдпрд╣ CheckBoxList рдХреЗ рд╕рд╛рде рдЖрдкрдХреЗ рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ рдХрд╛ рд╕реНрдерд╛рди рд╣реИредрд╣рдорд╛рд░реЗ рддрддреНрд╡ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
Index.cshtml (рдпрджрд┐ рдЖрдк рдПрдХ рдирдпрд╛ рджреГрд╢реНрдп рдЬреЛрдбрд╝рддреЗ рд╕рдордп рд░реЗрдЬрд░ рдЗрдВрдЬрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ) рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝реЗрдВ:
@Html.CheckBoxList()
рдФрд░ рдлрд╝рд╛рдЗрд▓
Global.asax рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ, рдЬреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдЯ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ, рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЖрдк
рдбреЗрдореЛ рдХрдВрдЯреНрд░реЛрд▓рд░,
рдЗрдВрдбреЗрдХреНрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:
routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Demo", action = "Index", id = UrlParameter.Optional } // Parameter defaults );
рдпрджрд┐ рд╕рднреА рдХрд╛рд░реНрдп рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдП рдЧрдП рдереЗ, рддреЛ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рд╡рд╛рд▓рд╛ рдПрдХ рдкреГрд╖реНрда рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ред рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВред
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; }
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рд╡рд╛рдпрд░рдлреНрд░реЗрдо-рдЯреЗрдмрд▓, рдЖрдЙрдЯрдкреБрдЯ рджрд┐рд╢рд╛- рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рдФрд░ рдкрд╛рдВрдЪ рдХреЙрд▓рдо рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗред рдмрд╛рдж рдореЗрдВ
cbl_Name рдкреНрд░реЙрдкрд░реНрдЯреА рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА
рдЬрд╛рдПрдЧреА ред
рд╣рдо рдЕрдкрдиреЗ CheckBoxList рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЯрд╛рдЗрдк рдЖрдИрдбреА рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди <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 рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рднреА рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдЕрдкрдиреЗ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ
рд╕реВрдЪрдХрд╛рдВрдХ рд╡рд┐рдзрд┐ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
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> рд╣реИ рдФрд░ рд╣рдорд╛рд░реЗ рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ:
@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 })
рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕реА рд░рд┐рдХреЙрд░реНрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд░рд┐рдЪрд┐рдд рд╣реИ:

рд╡рд░реНрддрдорд╛рди рдЖрд╡реЗрджрди рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг
рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╡рд░реНрддрдорд╛рди рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕рдордЭрдиреЗ рдФрд░ рд╕рдВрднрд╡рддрдГ рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдореИрдВ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ:
- рдлрд┐рд▓рд╣рд╛рд▓, рд╣рдо рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░ рдореЗрдВ рдбрд┐рдХреНрд╢рдирд░реА рдХрд╛ рдПрдХ рдореЙрдбрд▓ рдЯрд╛рдЗрдк рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдбрд┐рдХреНрд╢рдирд░реА <string>, int>, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрдВрдЯреНрд░реЛрд▓рд░ рд╕реЗ рдкреНрд░реЗрд╖рд┐рдд рдЕрдиреНрдп рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдкреЗрдЬ рдпрд╛ рдЗрдХрд╛рдИ (рдкрдВрдЬреАрдХрд░рдг, рдлреЙрд░реНрдо) рдХреЗ рдореЗрдЯрд╛ рдЯреИрдЧ (рд╢реАрд░реНрд╖рдХ, рд╡рд┐рд╡рд░рдг) рд╣реЛред рдЖрджреЗрд╢), - рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЕрдкрдиреЗ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдореЙрдбрд▓ рдХрд╛ рдПрдХрд╛рдзрд┐рдХрд╛рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЪреБрдиреЗ рдЧрдП рд╣рдорд╛рд░реЗ рддрддреНрд╡ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
- рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╕рдордп рдХреЗ рд╕рд╛рде, рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдЪреЗрдХрдмреЙрдХреНрд╕рд▓рд┐рд╕реНрдЯ рдХреЛ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░, рд╣рдореЗрдВ рдПрдХ рдирдпрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рдиреЗ рдпрд╛ рдореМрдЬреВрджрд╛ рд▓реЛрдЧреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рд╕рднреА рдХреЙрд▓ рдХреЛ рд╣рдорд╛рд░реЗ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ (рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рдЪрд╛рд░реЛрдВ рдореЗрдВ), рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИред
рдКрдкрд░ рд╕реЗ рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЙрдбрд▓ рдЬреЛрдбрд╝реЗрдВ (ViewModel) рдФрд░ рдЕрдиреНрдп рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЗрд╕ рдореЙрдбрд▓ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреЗрдХрдмреЙрдХреНрд╕ рд▓рд┐рд╕реНрдЯ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рд╕рдВрдЧреНрд░рд╣ рдкрд╛рд╕ рдХрд░реЗрдВред
- рд╣рдорд╛рд░реЗ рдирд┐рдпрдВрддреНрд░рдг рдХреА рдХреЙрд▓ рдХреЛ рджреГрд╢реНрдп рд╕реЗ рдЖрдВрд╢рд┐рдХ рджреГрд╢реНрдп рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ, рддрд╛рдХрд┐ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдпрд╛ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдерд╛рди рдкрд░ рдмрджрд▓рдирд╛ рдкрдбрд╝реЗред
- рд╣рдорд╛рд░реЗ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдореЗрдВ CheckBoxList рдореЗрдВ рд╕рдВрдЪрд░рд┐рдд рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рддрддреНрд╡ рдХреЙрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рд╣рдорд╛рд░реЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рдЖрдВрд╢рд┐рдХ рджреГрд╢реНрдп рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВред
рдиреЛрдЯ: рдЗрди рдФрд░ рдХрдИ рдЕрдиреНрдп рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЖрд╡реЗрджрди рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЦреБрдж рд╕реЗ рдкреВрдЫрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рдкрд╣рд▓реА рдмрд╛рд░ рдХреБрдЫ рдЗрд╕реА рддрд░рд╣ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдлрд┐рд░ рдореИрдВ рдЖрдкрдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдкрд░реАрдХреНрд╖рдг рдФрд░ рддреНрд░реБрдЯрд┐ рд╕реЗ рдЙрдирдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдиреЗрддреГрддреНрд╡ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛редрдПрдХ рджреГрд╢реНрдп рдореЙрдбрд▓ рдЬреЛрдбрд╝рдирд╛
рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░рд╛ рдкреНрд░реЗрдЬреЗрдВрдЯреЗрд╢рди рдореЙрдбрд▓ рди рдХреЗрд╡рд▓ рдЗрд╕рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрдЪрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЪрдпрдирд┐рдд рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдореЙрдбрд▓ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ
ViewModels рдлрд╝реЛрд▓реНрдбрд░ рдЬреЛрдбрд╝реЗрдВ, рдлрд┐рд░
ViewModel_Index.cs рдлрд╝рд╛рдЗрд▓ рдХреЛ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП
ViewModels рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:

рдФрд░ рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдореЙрдбрд▓ рдХрд╛ рдХреЛрдб:
public class ViewModel_Index { public IDictionary<string, int> Languages { get; set; } public int[] SelectedCheckBoxListItems { get; set; } }
рд╣рдорд╛рд░реЗ
DemoController рдХреА рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд╡рд┐рдзрд┐ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдмрджрд▓ рдЬрд╛рдПрдЧреА:
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 рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ encapsulating
рдЕрдкрдиреЗ
рдкрд╣рд▓реЗ рд▓реЗрдЦ рдореЗрдВ , рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рд╕реНрддрд╛рд░ рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рдпреЛрдЬрдирд╛ рд▓рд╛рдЧреВ рдХреА рдереА, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрдИ рдЕрдиреНрдп рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдПред рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рд╣рдорд╛рд░реЗ CheckBoxList рдХреЗ рдХреЙрд▓ рдХреЛ рдЖрдВрд╢рд┐рдХ рджреГрд╢реНрдп рдореЗрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЖрдВрд╢рд┐рдХ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ
/ рджреГрд╢реНрдп рдлрд╝реЛрд▓реНрдбрд░, рдЗрд╕рдХреЗ рд▓рд┐рдП
рдирд┐рдпрдВрддреНрд░рдг рдлрд╝реЛрд▓реНрдбрд░ рдФрд░
рдирд┐рдпрдВрддреНрд░рдг рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдирдП рдЖрдВрд╢рд┐рдХ
CheckBoxList.cshtml рджреГрд╢реНрдп рдЬреЛрдбрд╝реЗрдВрдЧреЗ:

рдЕрдм рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреА рд╕рдВрд░рдЪрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

рд╣рдо CheckBoxList рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреЗ рдЖрдВрд╢рд┐рдХ рджреГрд╢реНрдп рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдЕрдкрдиреЗ
рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рджреГрд╢реНрдп рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВред
@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 рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдЬреЛрдбрд╝рдирд╛
рдЪреВрдВрдХрд┐ рд╣рдо рдЕрдкрдиреЗ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдХреЙрд▓ рдХреЛ рдЕрдкрдиреЗ рдЖрдВрд╢рд┐рдХ рджреГрд╢реНрдп рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рднреА рд╡рд╣рд╛рдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ - рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдореЙрдбрд▓ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, рдПрдХ рдирдпрд╛
рдЪреЗрдХрдмреЙрдХреНрд╕ рд▓рд┐рд╕реНрдЯ рдмрдирд╛рдПрдВ, рдЗрд╕рдореЗрдВ
рдЪреЗрдХрдмреЙрдХреНрд╕ рд▓рд┐рд╕реНрдЯ_рдореЙрдбрд▓.рдХреНрд╕ рдХреНрд▓рд╛рд╕ рдЬреЛрдбрд╝реЗрдВ:
public class CheckBoxList_Model { public IDictionary<string, int> items; public CheckBoxList_Settings settings; }
рдбреЗрдЯрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рдореЙрдбрд▓ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реБрдП, рд╣рдорд╛рд░реЗ
рд╕реВрдЪрдХрд╛рдВрдХ рджреГрд╢реНрдп рдореЗрдВ рдЖрдВрд╢рд┐рдХ рджреГрд╢реНрдп рдХреЙрд▓ рдмрджрд▓реЗрдВ:
@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)
рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЕрдВрдд рд╣реИред рдЗрд╕рдХреЗ рдореБрдЦреНрдп рдмрд┐рдВрджреБрдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

рдЕрдЪреНрдЫреА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдЖрдЦрд┐рд░рдХрд╛рд░ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдП рд╣реИрдВ, рдФрд░ рдмреБрд░реА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдЕрдкрдиреЗ рдЪреЗрдХрдмреЙрдХреНрд╕рд▓рд┐рд╕реНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрднреА рддрдХ рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИред
рдЪреЗрдХрдмреЙрдХреНрд╕рд╡рд╛рджреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рддрддреНрд╡ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ:
1.
cbl_Layout рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдлрд╝реНрд░реЗрдорд┐рдВрдЧ HTML рдЯреИрдЧ (рддрд╛рд▓рд┐рдХрд╛, div) рдХрд╛
рдЪреБрдирд╛рд╡ ред
2. рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ
cbl_RepeatColumns рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рдЕрднрд┐рд▓реЗрдЦреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдирд╛ред
3. рд╡рд░реНрддрдорд╛рди рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд╕реАрд░рд┐рдпрд▓ рдирдВрдмрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рдЖрдЗрдЯрдо рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд░реНрддреЛрдВ рдХрд╛ рдЧрдарди:
3.1ред рдпрджрд┐ рдЖрдЙрдЯрдкреБрдЯ рдХреНрд╖реИрддрд┐рдЬ рд╣реИ, рдФрд░ рд╕реНрддрдВрднреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ = 4 рд╣реИ, рддреЛ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдкрд╣рд▓реЗ 4 рддрддреНрд╡реЛрдВ рд╕реЗ рдпреБрдХреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд 4 рдореЗрдВ рд╕реЗ рджреВрд╕рд░рд╛, рдЖрджрд┐:
[0 1 2 3] - 0 [4 5 6 7] - 1 [8 9 10 11]
3.2ред рдпрджрд┐ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд▓рдВрдмрд╡рдд рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕реНрддрдВрднреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ = 4 рдФрд░ рддрддреНрд╡реЛрдВ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ 24 рд╣реИ, рддреЛ рдкрд╣рд▓реЗ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЫрдареЗ рддрддреНрд╡ рд╕реЗ рдорд┐рд▓рдХрд░ (!) рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕рдВрдЦреНрдпрд╛ + 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. рдлреНрд░реЗрдорд┐рдВрдЧ рдЯреИрдЧ (рдбрд┐, рдЯреЗрдмрд▓) рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирдореВрдиреЛрдВ рдХреА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдЧрдарди:
4.1ред рдПрдХ div рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХреЗрд╡рд▓ рдкрдВрдХреНрддрд┐ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╣рд╛рдЗрдлрд╝рди рд╣реЛрдЧрд╛ред
4.2ред рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╣реИ:
4.2.1ред рд▓рд╛рдЗрди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВред Leibel рддрддреНрд╡реЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВред рдкрдВрдХреНрддрд┐ рдХреЗ рдЕрдВрдд рдореЗрдВред
5. рдлреНрд░реЗрдорд┐рдВрдЧ рдЯреИрдЧ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рдФрд░ рдЙрддреНрдкрдиреНрди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рджреГрд╢реНрдп рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ред
рдЪреВрдВрдХрд┐ рд▓реЗрдЦ рдХрд╛ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рдХреЛрдб рдФрд░ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХреЗрд╡рд▓ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рджреВрдВрдЧрд╛ - рдЖрдк рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдХреЗ рдмрд╛рдХреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЪреЗрдХрдмреЙрдХреНрд╕ рдорд╛рд░реНрдХрдЕрдк рдХреЗ рдЧрдарди рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдереЛрдбрд╝рд╛ рдФрд░ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВ:
HTML рдорд╛рд░реНрдХрдЕрдк рдЪреЗрдХрдмреЙрдХреНрд╕ рдФрд░ рдореЙрдбрд▓ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╛ рдЧрдарди
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдХреЛрдб рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реЗ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдФрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рддрддреНрд╡ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдЗрд╕ рдХреЛрдб рдореЗрдВ рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реЛрдЧреА рдХрд┐ рдирд╛рдо рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд╣рдорд╛рд░реЗ рдкреВрд░реЗ CheckBoxList рдХрд╛ рдирд╛рдо рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ,
рдбреЗрдореЛрдХреНрд░реЙрдЗрд▓рд░ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреА рд╣рдорд╛рд░реА
рдЗрдВрдбреЗрдХреНрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп
, рд╣рдо рдПрдХ рдЪрдпрдирд┐рдд рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдЪрдпрдирд┐рдд рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдореИрдВ рдЗрд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдКрдВрдЧрд╛ред
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:
[0 1 2 3] [4 5 6 7] [8 9 10 11]
рдЬрдм рд╣рдо рд▓рдВрдмрд╡рдд рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдРрд╕реЗ рддрддреНрд╡реЛрдВ рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ, рдЬрд┐рдирдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рд╡рд░реНрддрдорд╛рди рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рд╕реЗ = 0:
[0 6 12 18] [1 7 13 19]
рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдБрдЪ
рдЖрдЗрдП 3 рдЪреЗрдХрдмреЙрдХреНрд╕рд╡рд╛рджрд┐рдпреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рджреЗрдЦреЗрдВ, рдЬреЛ рд╣рдореЗрдВ рдЕрдВрдд рдореЗрдВ рдорд┐рд▓рд╛:
<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" /> }

рдЪрдпрдирд┐рдд рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрдкрдиреЗ рд╡реНрдпреВ рдмреЙрдХреНрд╕ рдХреЗ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде 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) {
рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдЗрдП рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВ:

рдпрджрд┐ рдЖрдк рдХреЛрдб рдбреБрдкреНрд▓рд┐рдХреЗрд╢рди, рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЙрдбрд▓ рдФрд░ рд░рдЦрд░рдЦрд╛рд╡ рдХреЗ рдкреНрд░рддрд┐ рдмрд┐рд▓реНрдХреБрд▓ рдЙрджрд╛рд╕реАрди рд╣реИрдВ, рддреЛ рдЖрдк рд╕реАрдзреЗ рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреЛ рд╕реАрдзреЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдЪрдпрдирд┐рдд рдорд╛рдиреЛрдВ рдХреЛ рд╕реАрдзреЗ рд╕рд░рдгреА рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдордд рднреВрд▓рд┐рдП рдХрд┐ рдЪреЗрдХрдмреЙрдХреНрд╕рд╡рд╛рджреА рдирд╛рдо рдФрд░ рд╕реНрд╡реАрдХреГрдд рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП):



рдареАрдХ рд╣реИ, рдЕрдм рдЬрдм рд╣рдордиреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ рдЬреЛ рд╣рдордиреЗ рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рд╣реИ, рддреЛ рдЕрдВрддрд┐рдо рдЕрд╡рд╢реЗрд╖ред
рдСрдмреНрдЬреЗрдХреНрдЯ HTMLAttributes рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирдП рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдЪреЗрдХрдмреЙрдХреНрд╕рд╡рд╛рдж рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░
рд╣рдорд╛рд░реЗ рддрддреНрд╡ рдХреЗ рдХреЛрдб рдХреЛ рдПрдХ рдирдИ рд╕рдВрдкрддреНрддрд┐ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╕реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреЙрд▓ (рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ) рдкрд░ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рд╕рдм
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 рд╕рд╣рд╛рдпрдХреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдмрдирд╛рдиреЗ, рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛;
- рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдЖрдЧреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд░реВрдкрд░реЗрдЦрд╛ рддреИрдпрд╛рд░ рдХреА;
- рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЗрдХрд╛рдИ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд╡рд┐рднрд╛рдЬрди рдХреЗ рд╕рд╛рде рдПрдХ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛;
- рд╣рдордиреЗ рдЙрд╕ рд╕рд╛рдЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЦрд╛ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИред
рд╕рд╛рдордЧреНрд░реА рдХреА рд╕реВрдЪреА
1.http :
//mvc.devexpress.com/Editors/CheckBoxList2.
ASP.NET MVC рд░реВрдкреЛрдВ рдореЗрдВ рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИ3.
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЛрд░реНрд╕ рдХреЛрдб