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

原文地址:https://www.cnblogs.com/yingger/p/5402728.html