Click here to Skip to main content
13,000,017 members (46,389 online)
Rate this:
Please Sign up or sign in to vote.
See more:
I want to display under each name from the table radio group relating to this name.
Now, I slightly modified Lanceley’s example ([^]). But I have to pre-create so many special fields in model as radio units I want to display.
In other case groups are coupled.
How can I solve this problem?
From view:
@model IEnumerable<Sample.Models.IndexViewModel>
    int i=0;
    for (i = 0; i < Model.Count();i++ )
     @Html.DisplayTextFor(m => m.ElementAt(i).Name)   
     @Html.RadioButtonForSelectList(m => m.ElementAt(i).TestRadio, Model.ElementAt(i).TestRadioList)

From model:
public class IndexViewModel
        public IEnumerable<SelectListItem> TestRadioList { get; set; }
        public String Name { get; set; }
        [Required(ErrorMessage = "You must select an option for TestRadio")]
        public String TestRadio { get; set; }
        [Required(ErrorMessage = "You must select an option for TestRadio2")]
        public String TestRadio2 { get; set; }
        [Required(ErrorMessage = "You must select an option for TestRadio3")]
        public String TestRadio3 { get; set; }

From helper:
    public static class HtmlExtensions
        public static MvcHtmlString RadioButtonForSelectList<TModel, TProperty>(
            this HtmlHelper<TModel> htmlHelper,
            Expression<Func<TModel, TProperty>> expression,
            IEnumerable<SelectListItem> listOfValues)
            var metaData = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
            var sb = new StringBuilder();
            if (listOfValues != null)
                // Create a radio button for each item in the list
                foreach (SelectListItem item in listOfValues)
                    // Generate an id to be given to the radio button field
                    var id = string.Format("{0}_{1}", metaData.PropertyName, item.Value);
                    // Create and populate a radio button using the existing html helpers
                    var label = htmlHelper.Label(id, HttpUtility.HtmlEncode(item.Text));
                    var radio = htmlHelper.RadioButtonFor(expression, item.Value, new { id = id }).ToHtmlString();
                    // Create the html string that will be returned to the client
                    // e.g. <input data-val="true" data-val-required="You must select an option" id="TestRadio_1" name="TestRadio" type="radio" value="1" /><label for="TestRadio_1">Line1</label>
                    sb.AppendFormat("<div class=\"RadioButton\">{0}{1}</div>", radio, label);
Posted 19-Nov-12 18:36pm

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
Top Experts
Last 24hrsThis month

Advertise | Privacy | Mobile
Web02 | 2.8.170624.1 | Last Updated 20 Nov 2012
Copyright © CodeProject, 1999-2017
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100