Advertisement
Guest User

RadioButtonListHelper.cs

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