问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何为htmlhelper 扩展 checkboxlist checkboxlistfor

发布网友 发布时间:2022-04-26 19:06

我来回答

1个回答

热心网友 时间:2023-10-22 18:14



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<TModel> 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.IDictionaryCopy();
                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> IDictionaryCopy(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;
        } 
    }

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 htmlhelper属于哪个命名空间 如何定义HtmlHelper扩展方法 如何添加htmlhelper 扩展方法 ICP备案是什么?和ICP许可证有什么不同? ICP备案和ICP许可证的区别有哪些? 谁知道喷漆的图片怎么弄 ICP备案和ICP许可证的区别有哪些 图片中花朵的颜色是用什么油漆的? ICP备案和ICP经营许可证有什么区别? 模型,求教图中的郡士油漆是什么种类的,求高手详细 如何用photoshop画出油漆被倒出的感觉就像图片这种 请问图片中的油漆是怎么回事? icp 许可证和ICP备案有什么区别 ICP经营许可证与ICP备案有什么区别 求油漆色卡2.5Y 8/12 2.5Y 8/14 两种颜色图片 这个图片有凃上油漆图片吗 油漆调色教程演示图谁有? ICP经营许可证与ICP备案证有什么区别 青春期遇上更年期小品台词 索劲电脑一体机怎么样? HtmlHelper方法怎么在Controller层调用 在asp.net(C#) MVC中如何用htmlhelper 图片链接到另一个页面 ! System.Web.Mvc.HtmlHelper”不包含“BeginForm”的定义 这是怎么回事呢?这是我的代码 这个地方的u是怎麽回事,自己瞎写的么还是什么,mvc 框架中的上强类型试图的htmlhelper MVC框架的MVC控件 C# MVC框架下设置页面文字 ci helper是做什么用的 xmlworkerhelper 在linux下怎么将html里的中文转换成pdf 华为手机北京售后服务 请问下,我用xmlworkerhelper生成pdf,在windows环境中,html包含中文可以正常的生成pdf 电脑开机出现“NVIDIA web helper.exe无法找到入口”怎么办? IE加载项中的htmldlgsafehelper class是什么? Flash Player Helper 是什么意思? Thunder Browser Helper这个是什么? 虫子的身体主要由什么构成? 虫子组词有哪些 三个虫组成的字“虫”怎么读? 虫的组词 虫子有什么器官? 虫的组词有哪些呢