Advertisement
Guest User

RadioButtonListHelper.cs

a guest
Nov 16th, 2012
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.60 KB | None | 0 0
  1. public static class RaidioButtonListHelper
  2.     {
  3.         /// <summary>
  4.         /// Create a radiobutton list from viewmodel.
  5.         /// </summary>
  6.         public static MvcHtmlString RadioButtonList<TModel, TResult>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TResult>> expression, IEnumerable<SelectListItem> listOfValues = null)
  7.         {
  8.             var typeOfProperty = expression.ReturnType;
  9.             var underlyingType = Nullable.GetUnderlyingType(typeOfProperty);
  10.             if (underlyingType != null)
  11.                 typeOfProperty = underlyingType;
  12.             if (listOfValues == null && typeOfProperty.IsEnum)
  13.                 listOfValues = new SelectList(Enum.GetValues(typeOfProperty));
  14.  
  15.             var metaData = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
  16.  
  17.             // Ctreat table
  18.             TagBuilder tableTag = new TagBuilder("table");
  19.             tableTag.AddCssClass("radio-main");
  20.  
  21.             // Create tr:s
  22.             var trTagLable = new TagBuilder("tr id=\"" + metaData.PropertyName + "Lables\"");
  23.             var trTagRadio = new TagBuilder("tr id=\"" + metaData.PropertyName + "Radios\"");
  24.  
  25.             listOfValues = listOfValues.OrderBy(x => x.Text);
  26.  
  27.             foreach (SelectListItem item in listOfValues)
  28.             {
  29.                 var text = item.Text;
  30.                 var value = item.Value ?? text;
  31.  
  32.                 // Generate an id to be given to the radio button field
  33.                 var id = string.Format("{0}_{1}", metaData.PropertyName, value);
  34.  
  35.                 // Create the radiobuttons
  36.                 var radioTag = htmlHelper.RadioButtonFor(expression, value, new { id = id }).ToHtmlString();
  37.  
  38.                 // Create the label for the radiobuttons.
  39.                 var labelTag = htmlHelper.Label(id, text);
  40.  
  41.                 // Add the lables and reaiobuttons to td:s
  42.                 var tdTagLable = new TagBuilder("td style=\"padding-left: 10px; text-align: center\"");
  43.                 var tdTagRadio = new TagBuilder("td style=\"padding-left: 10px; text-align: center\"");
  44.                 tdTagLable.InnerHtml = labelTag.ToString();
  45.                 tdTagRadio.InnerHtml = radioTag.ToString();
  46.  
  47.                 // Add tds: to tr:s
  48.                 trTagLable.InnerHtml += tdTagLable.ToString();
  49.                 trTagRadio.InnerHtml += tdTagRadio.ToString();
  50.  
  51.             }
  52.  
  53.             // Add tr:s to table
  54.             tableTag.InnerHtml = trTagLable.ToString() + trTagRadio.ToString();
  55.  
  56.             //Return the table tag
  57.             return new MvcHtmlString(tableTag.ToString());
  58.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement