Как собирать данные с неограниченного количества предметов RadioButton? - PullRequest
0 голосов
/ 14 ноября 2010
@{int i=0;}
@foreach (var e in Model.BlockList)
{ 
  @foreach (var e2 in e.RadioButtons)
  {
    <label>@Html.RadioButton("r"+i, e2.Id, false) @e2.ViewText</label><br />
  }
  i++;
}

Вопрос: как в контроллере пройти все ответы?

В этот момент мой класс Controller выглядит так:

[HttpPost]
public ActionResult Index(DocAlpha a)
{
   List<int> results = new List<int>();
   int i = 0;

   while (Request.Params["r" + i.ToString()] != null)
   {
      int val = 0;

      if(int.TryParse(Request.Params.Get("r" + i.ToString()), out val))
      {
         results.Add(val);
      }
      i++;
   }

   return Index();
}

может быть лучше?

1 Ответ

3 голосов
/ 16 ноября 2010

Вы можете создать массив имен переключателей, например, так (обратите внимание на имена):

Html : 
<input type="text" name="r[0]" value="" />
<input type="text" name="r[1]" value="" />
<input type="text" name="r[2]" value="" />
<!--and so on -->

Затем заставьте ваше действие принять массив:

public ActionResult TheAction (string[] r) {

}

Связыватель модели по умолчаниюавтоматически заполнит массив ответов в вашем действии значениями, введенными в форму.

...