0

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

@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>
    }

これは可能ですか?

写真を見る

4

2 に答える 2

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としてデータを取り戻すことができるはずです。

于 2012-05-08T13:00:58.187 に答える
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 
    }
}
于 2012-05-08T13:26:53.210 に答える