1

私は持っている

public class Version
{
    public bool LeftChecked {get; set;}
    public bool RightChecked {get; set;}

    //some other properties
}

List<Version> versions = ...

ビューでは、versionsリスト項目に対応する行とラジオ ボタンの 2 つの列を含むテーブルが必要です。1 つの列は 1 つのグループにあり、もう 1 つの列は別のグループにあります (各列の 1 つのボタンのみを選択できるようにするため)。トリッキーな部分は、バインドが正しく行われるように、これらのラジオ ボタンにプロパティをLeftCheckedマップする方法です。RightChecked

編集 回答で提案されているように試しましたが、その方法で作成されたhtmlは次のようになります。

<tr>
    <td>        
        <input id="Versions_0__LeftChecked" name="Versions[0].LeftChecked" type="radio" value="1" />    
    </td>    
    <td>    
        <input id="Versions_0__RightChecked" name="Versions[0].RightChecked" type="radio" value="1" />    
    </td>    
</tr>
<tr>
    <td>    
        <input id="Versions_1__LeftChecked" name="Versions[1].LeftChecked" type="radio" value="1" />
    </td>
    <td>
        <input id="Versions_1__RightChecked" name="Versions[1].RightChecked" type="radio" value="1" />
    </td>
</tr>

同じ列name属性は同じでなければならないため、これは問題ありません。その上、私のC#クラスにバインドされていないようです。まあ、JavaScriptのアプローチは仕事を素早くうまくやった...

4

1 に答える 1

4

ビュー内のバージョンのコレクションを反復処理し、Html.CheckboxFor ヘルパーを使用してチェックボックスを作成できるはずです。以下の構文を使用すると、フォームを投稿するときに適切なバインディングが得られます。

...other form fields

@for (int i  = 0; i < Model.Versions.Count; i++)
{
    <tr>
       <td>
          <label>Left</label>
          @Html.CheckBoxFor(x => x.Versions[i].LeftChecked)
       </td>
       <td>
          <label>Right</label>
          @Html.CheckBoxFor(x => x.Versions[i].RightChecked)
       </td>
    ... other properties
    </tr>
}

基本を説明する Haacked による良い記事があります http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

于 2012-06-03T14:49:10.327 に答える