zoukankan      html  css  js  c++  java
  • three ways creating custom helpers to show RadioButtonList in MVC

    first way is using the extension method to build the helper:    

     public class ListOption
        {
            public string Text { get; set; }
            public object Value { get; set; }
        }
    
        public static class CustomHelperExtensions
        {
            public static MvcHtmlString RadioButtonList(this HtmlHelper helper, string name, object selectedValue, params ListOption[] options)
            {
                int i = 0;
    
                StringBuilder builder = new StringBuilder();
    
                foreach (var option in options)
                {
                    bool isChecked = selectedValue == null ? false : selectedValue.ToString() == option.Value.ToString();
                    var controlId = name + i;
                    var mvcString = helper.RadioButton(name, option.Value, isChecked, new { id = controlId });
    
                    builder.AppendLine(mvcString.ToHtmlString());
    
                    TagBuilder tag = new TagBuilder("label");
                    tag.MergeAttribute("for", controlId);
                    tag.InnerHtml = option.Text;
    
                    builder.AppendLine(tag.ToString());
    
                    i++;
                }
    
                return MvcHtmlString.Create(builder.ToString());
            }
    
            public static MvcHtmlString RadioButtonList(this HtmlHelper helper, string name, object selectedValue, params string[] options)
            {
                var newOptions = new List<ListOption>();
    
                foreach (var option in options)
                {
                    newOptions.Add(new ListOption { Text = option, Value = option });
                }
    
                return helper.RadioButtonList(name, selectedValue, newOptions.ToArray());
            }
    
            public static MvcHtmlString YesNoRadioButtonList(this HtmlHelper helper, string name, object selectedValue)
            {
                return helper.RadioButtonList(name, selectedValue, "Yes", "No");
            }
        }

    second way is building helpers in current view page:

    @helper RadioButtonList(string name, object selectedValue, params ListOption[] options)
       {
           int i = 0;
           
           foreach (var option in options)
           {
               bool isChecked = selectedValue == null? false : selectedValue.ToString() == option.Value.ToString();           
               string id = name + i;
               @Html.RadioButton(name, option.Value, isChecked, new { id = id })
               <label for="@id"> @option.Text</label>
               i++;
           }       
       }
    
       @helper RadioButtonList(string name, object selectedValue, params string[] options)
       { 
           var newOptions = new List<ListOption>();
            
           foreach (var option in options)
           {
               newOptions.Add(new ListOption { Text = option, Value = option });
           }
    
           @RadioButtonList(name, selectedValue, newOptions.ToArray());
       }
    
       @helper YesNoRadioButtonList(string name, object selectedValue)
       {       
           @RadioButtonList(name, selectedValue, "Yes", "No");
       }

    the third way is building helpers in a view under App_Code folder:

    @using MVC = System.Web.Mvc;
    @using System.Web.Mvc.Html;
    @using MvcApplication8.Models;
    
    @helper RadioButtonList(MVC.HtmlHelper htmlHelper, string name, object selectedValue, params ListOption[] options)
    {
        int i = 0;
    
        foreach (var option in options)
        {
            bool isChecked = selectedValue == null ? false : selectedValue.ToString() == option.Value.ToString();
            string id = name + i;
            @htmlHelper.RadioButton(name, option.Value, isChecked, new { id = id })
            <label for="@id">@option.Text</label>
            i++;
        }       
    }
    
    @helper RadioButtonList(MVC.HtmlHelper htmlHelper, string name, object selectedValue, params string[] options)
    { 
        var newOptions = new List<ListOption>();
    
        foreach (var option in options)
        {
            newOptions.Add(new ListOption { Text = option, Value = option });
        }
    
        @RadioButtonList(htmlHelper, name, selectedValue, newOptions.ToArray());
    }
    
    @helper YesNoRadioButtonList(MVC.HtmlHelper htmlHelper, string name, object selectedValue)
    {       
        @RadioButtonList(htmlHelper, name, selectedValue, "Yes", "No");
    }

    how to use these helpers:

      @YesNoRadioButtonList("myo1", "")
        <br />
        @RadioButtonList("myo2", "", new ListOption[] { new ListOption { Text = "Yes", Value = 1 }, new ListOption { Text = "No", Value = 2 } })
        <br />
        @RadioButtonList("myo3", "", "A", "B", "C", "D")
        <hr />
        <br/>
        @Html.YesNoRadioButtonList("myo4", "")
        <br />
        @Html.RadioButtonList("myo5", "", new ListOption[] { new ListOption { Text = "Yes", Value = 1 }, new ListOption { Text = "No", Value = 2 } })
        <br />
        @Html.RadioButtonList("myo6", "", "A", "B", "C", "D")
        <hr />
        <br/>
        @CustomHelpers.YesNoRadioButtonList(Html,"myo7", "")
        <br />
        @CustomHelpers.RadioButtonList(Html, "myo8", "", new ListOption[] { new ListOption { Text = "Yes", Value = 1 }, new ListOption { Text = "No", Value = 2 } })
        <br />
        @CustomHelpers.RadioButtonList(Html, "myo9", "", "A", "B", "C", "D")
  • 相关阅读:
    SQL 多列合并一列
    jQuery Ajax post多个值传参
    jquery获取select选中的值
    js 事件对象
    有关cookie
    事件冒泡和事件捕获
    js事件监听
    阻止浏览器的默认行为
    鼠标拖拽效果
    自定义右键菜单
  • 原文地址:https://www.cnblogs.com/shcity/p/2941187.html
Copyright © 2011-2022 走看看