MVC自己实现RadioButtonList方法

xiaoxiao2021-02-28  141

博主的原则一贯就是有图有真相:

代码实现如下:

using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Web.Mvc.Html; using System.Web.UI.WebControls; namespace System.Web.Mvc { public static class RadioButtonListExtensions { public static IEnumerable<SelectListItem> ToSelectList(this Enum enumValue) { return from Enum e in Enum.GetValues(enumValue.GetType()) select new SelectListItem { Selected = e.Equals(enumValue), Text = e.ToDescription(), Value = Convert.ToInt32(Enum.Parse(enumValue.GetType(), e.ToString(), true)).ToString() }; } public static string ToDescription(this Enum value) { var attributes = (DescriptionAttribute[])value.GetType().GetField( value.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), false); return attributes.Length > 0 ? attributes[0].Description : value.ToString(); } public static MvcHtmlString RadioButtonList(this HtmlHelper htmlHelper, string name, IEnumerable<SelectListItem> selectList, RepeatDirection repeatDirection = RepeatDirection.Horizontal) { var sb = new StringBuilder(); if (selectList != null) { foreach (SelectListItem item in selectList) { var label = htmlHelper.Label(name, item.Text, new { onClick = "$('input[type=\"radio\"][name=\"" + name + "\"]').removeAttr('checked'); $(this).prev().prop('checked','checked'); " }); var radio = htmlHelper.RadioButton(name, item.Value, item.Selected, new { id = name + "_" + item.Value }).ToHtmlString(); sb.AppendFormat("<{2} class=\"RadioButton\">{0}{1}</{2}>", radio, label, (repeatDirection == RepeatDirection.Horizontal ? "span" : "div")); } } return MvcHtmlString.Create(sb.ToString()); } } }

RadioButtonList的枚举如下:

using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace System.Web.Mvc { public enum RadioButtonListEnum { 葫芦娃1 = 1, 葫芦娃2 = 2, 葫芦娃3 = 3, 葫芦娃4 = 4, 葫芦娃5 = 5, 葫芦娃6 = 6, 葫芦娃7 = 7 } }

前台调用如下:

@{ ViewBag.Title = "Home Page"; } <div class="jumbotron"> <h1>葫芦娃的MVC</h1> <p class="lead">葫芦娃测试MVC</p> </div> <div class="row"> <div class="col-md-4"> <h2>Get RadioButtonList Horizontal</h2> <p>@Html.RadioButtonList("HuLuWaRadioButton", RadioButtonListEnum.葫芦娃1.ToSelectList(),System.Web.UI.WebControls.RepeatDirection.Horizontal)</p> </div> <div class="col-md-4"> <h2>Get RadioButtonList Vertical</h2> <p>@Html.RadioButtonList("HuLuWaRadioButton", RadioButtonListEnum.葫芦娃1.ToSelectList(), System.Web.UI.WebControls.RepeatDirection.Vertical)</p> </div> </div>
转载请注明原文地址: https://www.6miu.com/read-25093.html

最新回复(0)