MVC readioButtonList的创作过程及运用

复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Linq.Expressions;
using System.Web.Mvc;
using System.Text;


namespace MyJob.Helpers
{
    public static class HtmlHelperExt
    {

        public static MvcHtmlString RadioButtonList(this HtmlHelper helper, string name, IEnumerable<String> items,string selectValue=null,RadioButtonListType type=0)
        {
            var selectList = new SelectList(items);
            return helper.RadioButtonList(name, selectList, selectValue,type);

        }
   
        /// <summary>
        /// 
        /// </summary>
        /// <param name="helper"></param>
        /// <param name="name"></param>
        /// <param name="items"></param>
        /// <param name="type">0:代表水平排列,1:代表垂直方向排列</param>
        /// <returns></returns>
        public static MvcHtmlString RadioButtonList(this HtmlHelper helper, string name, IEnumerable<SelectListItem> items, string selectValue=null, RadioButtonListType type = 0)
        {
            var sb = new StringBuilder();
            foreach (var item in items)
            {
                var rbValue = item.Value ?? item.Text;
                var rbText = item.Text ?? item.Value;
                var rbId = name + "_" + rbValue;
                var radioTag = "";
                if (String.IsNullOrEmpty(selectValue))
                {
                    if (item.Selected)
                        radioTag = String.Format("<input name='{0}' id='{1}' checked value='{2}' type='radio'>", name, rbId, rbValue);
                    else
                        radioTag = String.Format("<input name='{0}' id='{1}'  value='{2}' type='radio'>", name, rbId, rbValue);
                }
                else {
                    if (rbValue.Trim() == selectValue.Trim()) 
                        radioTag = String.Format("<input name='{0}' id='{1}' checked value='{2}' type='radio'>", name, rbId, rbValue);
                    else
                        radioTag = String.Format("<input name='{0}' id='{1}'  value='{2}' type='radio'>", name, rbId, rbValue);
                }
                var labelTag = new TagBuilder("label");
                labelTag.MergeAttribute("for", rbId);
                labelTag.MergeAttribute("id", rbId + "_label");
                labelTag.InnerHtml = rbText;

                sb.Append(radioTag.ToString() + labelTag.ToString());
                if (type == RadioButtonListType.V) sb.Append("<br/>");
            }

            return MvcHtmlString.Create(sb.ToString());
       
        }
    }
}
复制代码

调用1

复制代码
@Html.RadioButtonList(m=>m.UserType,new [] {
    new SelectListItem {
          Text = "个人",
           Value = "Personal",
           Selected = true
     },
      new SelectListItem {
            Text = "企业",
            Value = "Company"
      }
})
复制代码

 

调用2  

复制代码
@Html.RadioButtonList(m=>m.UserType,new [] {
    new SelectListItem {
          Text = "个人",
           Value = "Personal",
           Selected = true
     },
      new SelectListItem {
            Text = "企业",
            Value = "Company"
      }
},"个人",0)
复制代码

 

其实  复选也一样! checkBoxlist

posted @   酒沉吟  阅读(382)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示