Click here to Skip to main content
11,490,282 members (60,973 online)
Rate this: bad
Please Sign up or sign in to vote.
See more: C# MVC3
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 19:36pm

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

  Print Answers RSS
0 Sergey Alexandrovich Kryukov 570
1 Andy Lanng 233
2 OriginalGriff 188
3 Sascha Lefèvre 170
4 Maciej Los 160
0 Sergey Alexandrovich Kryukov 9,713
1 OriginalGriff 8,475
2 Sascha Lefèvre 3,504
3 Maciej Los 3,106
4 Richard Deeming 2,370

Advertise | Privacy | Mobile
Web04 | 2.8.150520.1 | Last Updated 20 Nov 2012
Copyright © CodeProject, 1999-2015
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