[转载].NET MVC3 中扩展一个HtmlHelper方法CheckBoxList – 单程列车 – 博客园.
MVC中有DropDownList方法,挺好用,可是最常用的需求,一组checkboxlist咋没个类似方法呢?郁闷之余,自己做一个吧,直接上代码,呵呵
<span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" > static </span><span class = "pln" > </span><span class = "typ" >MvcHtmlString</span><span class = "pln" > </span><span class = "typ" >CheckBoxList</span><span class = "pun" >(</span><span class = "kwd" > this </span><span class = "pln" > </span><span class = "typ" >HtmlHelper</span><span class = "pln" > helper</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > name</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "typ" >IEnumerable</span><span class = "pln" > selectList</span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > return </span><span class = "pln" > </span><span class = "typ" >CheckBoxList</span><span class = "pun" >(</span><span class = "pln" >helper</span><span class = "pun" >,</span><span class = "pln" > name</span><span class = "pun" >,</span><span class = "pln" > selectList</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "kwd" > new </span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "pun" >});</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" > static </span><span class = "pln" > </span><span class = "typ" >MvcHtmlString</span><span class = "pln" > </span><span class = "typ" >CheckBoxList</span><span class = "pun" >(</span><span class = "kwd" > this </span><span class = "pln" > </span><span class = "typ" >HtmlHelper</span><span class = "pln" > helper</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > name</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "typ" >IEnumerable</span><span class = "pln" > selectList</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "kwd" > object </span><span class = "pln" > htmlAttributes</span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "typ" >IDictionary</span><span class = "pln" > </span><span class = "typ" >HtmlAttributes</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >HtmlHelper</span><span class = "pun" >.</span><span class = "typ" >AnonymousObjectToHtmlAttributes</span><span class = "pun" >(</span><span class = "pln" >htmlAttributes</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "typ" >HashSet</span><span class = "pln" > </span><span class = "kwd" > set </span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > new </span><span class = "pln" > </span><span class = "typ" >HashSet</span><span class = "pun" >();</span><span class = "pln" > </span><span class = "typ" >List</span><span class = "pln" > list </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > new </span><span class = "pln" > </span><span class = "typ" >List</span><span class = "pln" > </span><span class = "pun" >();</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > selectedValues </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >Convert</span><span class = "pun" >.</span><span class = "typ" >ToString</span><span class = "pun" >((</span><span class = "pln" >selectList </span><span class = "kwd" > as </span><span class = "pln" > </span><span class = "typ" >SelectList</span><span class = "pun" >).</span><span class = "typ" >SelectedValue</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "kwd" > if </span><span class = "pln" > </span><span class = "pun" >(!</span><span class = "kwd" > string </span><span class = "pun" >.</span><span class = "typ" >IsNullOrEmpty</span><span class = "pun" >(</span><span class = "pln" >selectedValues</span><span class = "pun" >))</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > if </span><span class = "pln" > </span><span class = "pun" >(</span><span class = "pln" >selectedValues</span><span class = "pun" >.</span><span class = "typ" >Contains</span><span class = "pun" >(</span><span class = "str" > "," </span><span class = "pun" >))</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pun" >[]</span><span class = "pln" > tempStr </span><span class = "pun" >=</span><span class = "pln" > selectedValues</span><span class = "pun" >.</span><span class = "typ" >Split</span><span class = "pun" >(</span><span class = "str" > ',' </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "kwd" > for </span><span class = "pln" > </span><span class = "pun" >(</span><span class = "kwd" > int </span><span class = "pln" > i </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "lit" >0</span><span class = "pun" >;</span><span class = "pln" > i </span><span class = "pun" >&</span><span class = "pln" >lt</span><span class = "pun" >;</span><span class = "pln" > tempStr</span><span class = "pun" >.</span><span class = "typ" >Length</span><span class = "pun" >;</span><span class = "pln" > i</span><span class = "pun" >++)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > set </span><span class = "pun" >.</span><span class = "typ" >Add</span><span class = "pun" >(</span><span class = "pln" >tempStr</span><span class = "pun" >[</span><span class = "pln" >i</span><span class = "pun" >]);</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > else </span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > set </span><span class = "pun" >.</span><span class = "typ" >Add</span><span class = "pun" >(</span><span class = "pln" >selectedValues</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > foreach </span><span class = "pln" > </span><span class = "pun" >(</span><span class = "typ" >SelectListItem</span><span class = "pln" > item </span><span class = "kwd" > in </span><span class = "pln" > selectList</span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > item</span><span class = "pun" >.</span><span class = "typ" >Selected</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "pun" >(</span><span class = "pln" >item</span><span class = "pun" >.</span><span class = "typ" >Value</span><span class = "pln" > </span><span class = "pun" >!=</span><span class = "pln" > </span><span class = "kwd" > null </span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >?</span><span class = "pln" > </span><span class = "kwd" > set </span><span class = "pun" >.</span><span class = "typ" >Contains</span><span class = "pun" >(</span><span class = "pln" >item</span><span class = "pun" >.</span><span class = "typ" >Value</span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >:</span><span class = "pln" > </span><span class = "kwd" > set </span><span class = "pun" >.</span><span class = "typ" >Contains</span><span class = "pun" >(</span><span class = "pln" >item</span><span class = "pun" >.</span><span class = "typ" >Text</span><span class = "pun" >);</span><span class = "pln" > list</span><span class = "pun" >.</span><span class = "typ" >Add</span><span class = "pun" >(</span><span class = "pln" >item</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > selectList </span><span class = "pun" >=</span><span class = "pln" > list</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "typ" >HtmlAttributes</span><span class = "pun" >.</span><span class = "typ" >Add</span><span class = "pun" >(</span><span class = "str" > "type" </span><span class = "pun" >,</span><span class = "pln" > </span><span class = "str" > "checkbox" </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "typ" >HtmlAttributes</span><span class = "pun" >.</span><span class = "typ" >Add</span><span class = "pun" >(</span><span class = "str" > "id" </span><span class = "pun" >,</span><span class = "pln" > name</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "typ" >HtmlAttributes</span><span class = "pun" >.</span><span class = "typ" >Add</span><span class = "pun" >(</span><span class = "str" > "name" </span><span class = "pun" >,</span><span class = "pln" > name</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "typ" >HtmlAttributes</span><span class = "pun" >.</span><span class = "typ" >Add</span><span class = "pun" >(</span><span class = "str" > "style" </span><span class = "pun" >,</span><span class = "pln" > </span><span class = "str" > "margin:0 0 0 10px;line-height:30px; vertical-align:-8px;border:none;" </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "typ" >StringBuilder</span><span class = "pln" > stringBuilder </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > new </span><span class = "pln" > </span><span class = "typ" >StringBuilder</span><span class = "pun" >();</span><span class = "pln" > </span><span class = "kwd" > foreach </span><span class = "pln" > </span><span class = "pun" >(</span><span class = "typ" >SelectListItem</span><span class = "pln" > selectItem </span><span class = "kwd" > in </span><span class = "pln" > selectList</span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "typ" >IDictionary</span><span class = "pln" > newHtmlAttributes </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >HtmlAttributes</span><span class = "pun" >.</span><span class = "typ" >DeepCopy</span><span class = "pun" >();</span><span class = "pln" > newHtmlAttributes</span><span class = "pun" >.</span><span class = "typ" >Add</span><span class = "pun" >(</span><span class = "str" > "value" </span><span class = "pun" >,</span><span class = "pln" > selectItem</span><span class = "pun" >.</span><span class = "typ" >Value</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "kwd" > if </span><span class = "pun" >(</span><span class = "pln" >selectItem</span><span class = "pun" >.</span><span class = "typ" >Selected</span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > newHtmlAttributes</span><span class = "pun" >.</span><span class = "typ" >Add</span><span class = "pun" >(</span><span class = "str" > "checked" </span><span class = "pun" >,</span><span class = "pln" > </span><span class = "str" > "checked" </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "typ" >TagBuilder</span><span class = "pln" > tagBuilder </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > new </span><span class = "pln" > </span><span class = "typ" >TagBuilder</span><span class = "pun" >(</span><span class = "str" > "input" </span><span class = "pun" >);</span><span class = "pln" > tagBuilder</span><span class = "pun" >.</span><span class = "typ" >MergeAttributes</span><span class = "pun" >(</span><span class = "pln" >newHtmlAttributes</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > inputAllHtml</span><span class = "pun" >=</span><span class = "pln" > tagBuilder</span><span class = "pun" >.</span><span class = "typ" >ToString</span><span class = "pun" >(</span><span class = "typ" >TagRenderMode</span><span class = "pun" >.</span><span class = "typ" >SelfClosing</span><span class = "pun" >);</span><span class = "pln" > stringBuilder</span><span class = "pun" >.</span><span class = "typ" >AppendFormat</span><span class = "pun" >(@</span><span class = "str" > "<label> {0} {1}</label>" </span><span class = "pun" >,</span><span class = "pln" > inputAllHtml</span><span class = "pun" >,</span><span class = "pln" > selectItem</span><span class = "pun" >.</span><span class = "typ" >Text</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > return </span><span class = "pln" > </span><span class = "typ" >MvcHtmlString</span><span class = "pun" >.</span><span class = "typ" >Create</span><span class = "pun" >(</span><span class = "pln" >stringBuilder</span><span class = "pun" >.</span><span class = "typ" >ToString</span><span class = "pun" >());</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > private </span><span class = "pln" > </span><span class = "kwd" > static </span><span class = "pln" > </span><span class = "typ" >IDictionary</span><span class = "pln" > </span><span class = "typ" >DeepCopy</span><span class = "pun" >(</span><span class = "kwd" > this </span><span class = "pln" > </span><span class = "typ" >IDictionary</span><span class = "pln" > ht</span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "typ" >Dictionary</span><span class = "pln" > _ht</span><span class = "pun" >=</span><span class = "kwd" > new </span><span class = "pln" > </span><span class = "typ" >Dictionary</span><span class = "pun" >();</span><span class = "pln" > </span><span class = "kwd" > foreach </span><span class = "pln" > </span><span class = "pun" >(</span><span class = "kwd" > var </span><span class = "pln" > p </span><span class = "kwd" > in </span><span class = "pln" > ht</span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > _ht</span><span class = "pun" >.</span><span class = "typ" >Add</span><span class = "pun" >(</span><span class = "pln" >p</span><span class = "pun" >.</span><span class = "typ" >Key</span><span class = "pun" >,</span><span class = "pln" > p</span><span class = "pun" >.</span><span class = "typ" >Value</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > return </span><span class = "pln" > _ht</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span> |
可以直接拿去用
生成的每一个checkbox外部都有一个label,感觉不错,不喜欢可以去掉,还有一个 HtmlAttributes.Add(“style”, “margin:0 0 0 10px;line-height:30px; vertical-align:-8px;border:none;”); 是为了让显示更好看的,如果在你的样式下面位置不好看你可以把这行去掉