Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Linq.Expressions;
- using System.Text;
- using System.Web.Mvc;
- using System.Web.Mvc.Html;
- using System.Collections;
- using System.Web;
- namespace G4S.Common.MVC.Extensions
- {
- public static class RaidioButtonListHelper
- {
- /// <summary>
- /// Create a radiobutton list from viewmodel.
- /// </summary>
- public static MvcHtmlString RadioButtonList<TModel, TResult>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TResult>> expression, IEnumerable<SelectListItem> listOfValues = null)
- {
- var typeOfProperty = expression.ReturnType;
- if (listOfValues == null && typeOfProperty.IsEnum)
- listOfValues = new SelectList(Enum.GetValues(typeOfProperty));
- var metaData = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
- // Ctreat table
- TagBuilder tableTag = new TagBuilder("table");
- tableTag.AddCssClass("radio-main");
- // Create tr:s
- var trTagLable = new TagBuilder("tr id=\"" + metaData.PropertyName + "Lables\"");
- var trTagRadio = new TagBuilder("tr id=\"" + metaData.PropertyName + "Radios\"");
- foreach (SelectListItem item in listOfValues)
- {
- var text = item.Text;
- var value = item.Value ?? text;
- // Generate an id to be given to the radio button field
- var id = string.Format("{0}_{1}", metaData.PropertyName, value);
- // Create the radiobuttons
- var radioTag = htmlHelper.RadioButtonFor(expression, value, new { id = id }).ToHtmlString();
- // Create the label for the radiobuttons.
- var labelTag = htmlHelper.Label(id, HttpUtility.HtmlEncode(text));
- // Add the lables and reaiobuttons to td:s
- var tdTagLable = new TagBuilder("td style=\"padding-left: 10px; text-align: center\"");
- var tdTagRadio = new TagBuilder("td style=\"padding-left: 10px; text-align: center\"");
- tdTagLable.InnerHtml = labelTag.ToString();
- tdTagRadio.InnerHtml = radioTag.ToString();
- // Add tds: to tr:s
- trTagLable.InnerHtml += tdTagLable.ToString();
- trTagRadio.InnerHtml += tdTagRadio.ToString();
- }
- // Add tr:s to table
- tableTag.InnerHtml = trTagLable.ToString() + trTagRadio.ToString();
- //Return the table tag
- return new MvcHtmlString(tableTag.ToString());
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement