2012-05-08 14 views
0

ラジオボタングループから値を収集する必要がある私のビュー(下図参照)にテーブルがあります。次に、次のボタンを押すと、各テーブル行の値がリストに表示されます。これは私のコードです。複数のラジオボタンから値を取得するMVC3

@foreach (var item in ViewBag.convertedSubjectsList) 
    { 
     <tr> 
     <td> 
      <br /> 
      <br /> 
      @item.Part 
      <br /> 
      <br /> 
     </td> 
     <td> 
      @item.Name 
     </td> 
     <td> 
     <form> 
      <input type="radio" name="used" value="yes" /> 
      @Resources.Resources.SubjectRadioYes<br /> 
      <input type="radio" name="used" value="no" /> 
      @Resources.Resources.SubjectRadioNo 
      </form> 
     </td> 
     </tr> 
    } 

これは考えられますか?あなたのすべてのラジオボタンが同じ形式である必要があり

See picture

+0

あなたの質問「これが可能である」とあなたはそれがどのように見えるかの印刷画面を提供されて待ちます。何かがかなり追加されていません... – RhysW

+0

画像はより良い文脈のために、今どのように表示されているかを示すことです。それはあなたのために大きな問題なら、私はそれを削除することができます。 – mortenstarck

答えて

1

ビュー:

<form method=post action="@Url.Action("Save")"> 
<table> 
@foreach (var item in ViewBag.convertedSubjectsList) 
{ 
    <tr> 
    <td> 
     <br /><br /> 
     @item.Part 
     <br /><br /> 
    </td> 
    <td> 
     @item.Name 
    </td> 
    <td> 
     <input type="radio" name="@item.Part" value="yes" /> 
     Yes<br /> 
     <input type="radio" name="@item.Part" value="no" /> 
     No 
    </td> 
    </tr> 
} 
</table> 
<input type="submit" value="Submit" /> 
</form> 

コントローラー:

public ActionResult Save(FormCollection form) 
{ 
    foreach (var item in form.AllKeys) 
    { 
     string value = form[item]; 
     // save data 
    } 
} 
1

異なるもの

@using (Html.BeginForm()) { 
    //yourcode 
} 

それから私は、使用されたモデルとして「convertedSubjectList」(またはViewModelにの一部を置きますモデルとして)。

モデルのタイプがIEnumerable<ConvertedSubject>であるとします。

ループに続い

および取得要素

@for (int i = 0; i < Model.Count; i++) { 
    <tr> 
     <td>@Html.DisplayFor(m => Model[i].Part)</td> 
     <td>@Html.Displayfor(m => Model[i].Name)</td> 
     <td>@Html.RadioButtonYesNoFor(m => Model[i].xxx)</td>//name of the property used for radio value 
     //you could use a CheckBoxFor, if you have only "yes/no", but as you want 
    </tr> 
} 

少しのHtmlHelper

public static IHtmlString RadioButtonYesNoFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression) 
     { 
      var stringBuilder = new StringBuilder(); 
      stringBuilder.Append(string.Format("{0} {1}", html.RadioButtonFor(expression, true).ToHtmlString(), "Yes")); 
      stringBuilder.Append(string.Format("{0} {1}", html.RadioButtonFor(expression, false).ToHtmlString(), "No")); 
      return MvcHtmlString.Create(stringBuilder.ToString()); 
     } 

は、次に、あなたの投稿のアクションでのIListとしてあなた件のデータを取り戻すことができるはずです。