MVC CheckBoxList的實現

來源:互聯網
上載者:User

標籤:express   view   join   .text   stat   ext   else   type   cti   

using System;using System.Collections.Generic;using System.Linq;using System.Linq.Expressions;using System.Text;using System.Web;using System.Web.Mvc;namespace Demo{    public static class CheckBoxListHelper    {        public static MvcHtmlString CheckBoxList(this HtmlHelper helper, string name, bool isHorizon = true)        {            return CheckBoxList(helper, name, helper.ViewData[name] as IEnumerable<SelectListItem>, new { }, isHorizon);        }        public static MvcHtmlString CheckBoxList(this HtmlHelper helper, string name, IEnumerable<SelectListItem> selectList, bool isHorizon = true)        {            return CheckBoxList(helper, name, selectList, new { }, isHorizon);        }        public static MvcHtmlString CheckBoxListFor<TModel, TProperty>(this HtmlHelper helper, Expression<Func<TModel, TProperty>> expression, IEnumerable<SelectListItem> selectList, bool isHorizon = true)        {            string[] propertys = expression.ToString().Split(".".ToCharArray());            string id = string.Join("_", propertys, 1, propertys.Length - 1);            string name = string.Join(".", propertys, 1, propertys.Length - 1);            return CheckBoxList(helper, id, name, selectList, new { }, isHorizon);        }        public static MvcHtmlString CheckBoxList(this HtmlHelper helper, string name, IEnumerable<SelectListItem> selectList, object htmlAttributes, bool isHorizon = true)        {            return CheckBoxList(helper, name, name, selectList, htmlAttributes, isHorizon);        }        public static MvcHtmlString CheckBoxList(this HtmlHelper helper, string id, string name, IEnumerable<SelectListItem> selectList, object htmlAttributes, bool isHorizon = true)        {            IDictionary<string, object> HtmlAttributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);            HashSet<string> set = new HashSet<string>();            List<SelectListItem> list = new List<SelectListItem>();            string selectedValues = (selectList as SelectList).SelectedValue == null ? string.Empty : Convert.ToString((selectList as SelectList).SelectedValue);            if (!string.IsNullOrEmpty(selectedValues))            {                if (selectedValues.Contains(","))                {                    string[] tempStr = selectedValues.Split(‘,‘);                    for (int i = 0; i < tempStr.Length; i++)                    {                        set.Add(tempStr[i].Trim());                    }                }                else                {                    set.Add(selectedValues);                }            }            foreach (SelectListItem item in selectList)            {                item.Selected = (item.Value != null) ? set.Contains(item.Value) : set.Contains(item.Text);                list.Add(item);            }            selectList = list;            HtmlAttributes.Add("type", "checkbox");            HtmlAttributes.Add("id", id);            HtmlAttributes.Add("name", name);            HtmlAttributes.Add("style", "border:none;");            StringBuilder stringBuilder = new StringBuilder();            foreach (SelectListItem selectItem in selectList)            {                IDictionary<string, object> newHtmlAttributes = HtmlAttributes.DeepCopy();                newHtmlAttributes.Add("value", selectItem.Value);                if (selectItem.Selected)                {                    newHtmlAttributes.Add("checked", "checked");                }                TagBuilder tagBuilder = new TagBuilder("input");                tagBuilder.MergeAttributes<string, object>(newHtmlAttributes);                string inputAllHtml = tagBuilder.ToString(TagRenderMode.SelfClosing);                string containerFormat = isHorizon ? @"<label> {0}  {1}</label>" : @"<p><label> {0}  {1}</label></p>";                stringBuilder.AppendFormat(containerFormat,                   inputAllHtml, selectItem.Text);            }            return MvcHtmlString.Create(stringBuilder.ToString());        }        private static IDictionary<string, object> DeepCopy(this IDictionary<string, object> ht)        {            Dictionary<string, object> _ht = new Dictionary<string, object>();            foreach (var p in ht)            {                _ht.Add(p.Key, p.Value);            }            return _ht;        }    }} 

 

MVC CheckBoxList的實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.