[MVC] Dyamische radiobuttonlist. Geen waarde na submit

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • tha_crazy
  • Registratie: Maart 2007
  • Laatst online: 08:04
Ik ben aan het kijken om een bepaald aanvraagformulier te maken voor een website in MVC. Deze aanvraagformulieren werden normaal in ASPX hard gemaakt, maar nu deze site over kan naar MVC lijkt het me het makkelijkst om deze dynamisch te maken.

Ondertussen heb ik dit voor Checkboxen al prima werkend, echter moet er ook een mogelijkheid met radiobuttons zijn en hierop loop ik vast.
Ik krijg de radiobuttons netjes vanuit de DB opgebouwd, echter in de POST krijg ik geen waarde door in mijn model. Bij de checkboxen werkt dit wel.
Zie ik iets over het hoofd?

Ik heb onder andere deze resource gebruikt:
http://www.c-sharpcorner....-in-various-way-in-mv201/

Hoe het er nu uit ziet (eingzins gestript)
Tevens, checks zoals null zitten er nog niet in aangezien het puur even om het PoC gaat voor mij.

Model:
C#:
1
2
3
4
5
6
public class AanvraagModel
    {
        public List<CheckBox> OptiesCbx { get; set; }

        public List<RadioButton> OptiesRbl { get; set; }
    }


Controller:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
        [HttpGet]
        public ActionResult Aanvraagformulier(int id)
        {
            AanvraagModel model = new AanvraagModel();

            IEnumerable<Aanvraagformulieren> formulier = (from b in db.Aanvraagformulieren
                                             where b.ID == id
                                             select b);

            List<CheckBox> checkboxen = new List<CheckBox>();
            List<RadioButton> radiobuttons = new List<RadioButton>();

            foreach (Aanvraagformulieren item in formulier)
            {
                switch (item.Item)
                {
                    //Checkbox
                    case 1:
                        checkboxen.Add(new CheckBox { Text = item.Text });
                        break;
                    //radiobutton
                    case 2:
                        radiobuttons.Add(new RadioButton { Text = item.Text, ID = item.Text});
                        break;
                }
            }

            model.OptiesCbx = checkboxen;
            model.OptiesRbl = radiobuttons;

            return View(model);
        }

        [HttpPost]
        public ActionResult Aanvraagformulier(AanvraagModel model)
        {
            int x = 9; //Voor debug om in de model te kijken.

            return View(model);
        }


View:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
        @if (Model.OptiesRbl.Count > 0)
        {
            <div class="form-group">
                @Html.LabelFor(model => model.OptiesRbl, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @for(int i = 0; i < Model.OptiesRbl.Count; i++)
                    {
                        @Html.RadioButtonFor(model => model.OptiesRbl, Model.OptiesRbl[i].ID) @Html.DisplayFor(model => Model.OptiesRbl[i].Text) <br />
                    }
                </div>
            </div>
        }

[ Voor 6% gewijzigd door tha_crazy op 24-03-2016 14:28 ]

Beste antwoord (via tha_crazy op 25-03-2016 13:52)


  • sig69
  • Registratie: Mei 2002
  • Nu online
Je moet nog een property aan je model toegevoegen voor de geselecteerde radiobutton, en die in je Html.RadioButtonFor als name expressie gebruiken. Van meerdere radiobuttons kan er immers maar één geselecteerd zijn.

[ Voor 18% gewijzigd door sig69 op 24-03-2016 16:55 ]

Roomba E5 te koop

Alle reacties


Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Nu online
Je moet nog een property aan je model toegevoegen voor de geselecteerde radiobutton, en die in je Html.RadioButtonFor als name expressie gebruiken. Van meerdere radiobuttons kan er immers maar één geselecteerd zijn.

[ Voor 18% gewijzigd door sig69 op 24-03-2016 16:55 ]

Roomba E5 te koop


Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
sig69 schreef op donderdag 24 maart 2016 @ 16:54:
Van meerdere radiobuttons kan er immers maar maximaal één geselecteerd zijn.
FTFY (kan ook géén zijn)

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • tha_crazy
  • Registratie: Maart 2007
  • Laatst online: 08:04
sig69 schreef op donderdag 24 maart 2016 @ 16:54:
Je moet nog een property aan je model toegevoegen voor de geselecteerde radiobutton, en die in je Html.RadioButtonFor als name expressie gebruiken. Van meerdere radiobuttons kan er immers maar één geselecteerd zijn.
Heh, Niet te geloven dat ik daar zoveel overheen heb gekeken 8)7
Inderdaad, volgende aanpassingen gedaan:

Model
C#:
1
2
3
4
5
6
7
8
    public class AanvraagModel
    {
        public List<CheckBox> OptiesCbx { get; set; }

        public List<RadioButton> OptiesRbl { get; set; }

        public string SelectedRbl { get; set; }
    }


View
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
        @if (Model.OptiesRbl.Count > 0)
        {
            <div class="form-group">
                @Html.LabelFor(model => model.OptiesRbl, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @for(int i = 0; i < Model.OptiesRbl.Count; i++)
                    {
                        @Html.RadioButtonFor(model => model.SelectedRbl, Model.OptiesRbl[i].Text) @Html.DisplayFor(model => Model.OptiesRbl[i].Text) <br />
                    }
                </div>
            </div>
        }