2011-01-13 7 views
1

私EF4 EntityCollectionは、チェックボックスの値をバインドするために得るために、私は手動でそうのようなループのチェックボックスを作成する必要があります。クイックMVC2のチェックボックスの質問

<p> 
    <%: Html.Label("Platforms") %><br /> 
    <% for(var i = 0; i < Model.AllPlatforms.Count; ++i) 
     { %> 
      <%: Model.AllPlatforms[i].Platform.Name %> <input type="checkbox" name="PlatformIDs" value="<%: Model.AllPlatforms[i].Platform.PlatformID %>" /><br /> 
    <% } %> 
</p> 

それは動作しますが、それはしていませんモデルエンティティを編集しているときに、チェックボックスのグループを既存の値で自動的に設定します。私はそれのようなものでそれをすくいすることはできますか?

<p> 
    <%: Html.Label("Platforms") %><br /> 
    <% for(var i = 0; i < Model.AllPlatforms.Count; ++i) 
     { %> 
      <%: Model.AllPlatforms[i].Platform.Name %> <input type="checkbox" name="PlatformIDs" value="<%: Model.AllPlatforms[i].Platform.PlatformID %>" checked=<%: Model.GameData.Platforms.Any(p => PlatformID == i) ? "true" : "false" %> /><br /> 
    <% } %> 
</p> 

私は正しい方向に動いているかどうかは分かりません。

EDIT:わたしは意図的にMVCのチェックボックスのHTMLヘルパーメソッドから遠ざかっているので、自分のニーズにあまりにも柔軟性がありません。私のチェックボックスは、整数をその値として設計によって使用します。

答えて

2

閉じるには、それにsnipetを変更する必要があると思います。チェックボックスをオンにしないと、チェックされた属性がすべてで放出されないように、実際にサーバー側のコードを変更する必要があります。

checked="true" 

または

checked="false" 

技術的に両方の無効なHTMLです。 Source

あなたがチェックチェックボックスをしたい場合は、あなたが発光するようにしたい:

checked="checked" 

引用符内の任意の値が実際に(チェック=「false」を含む)]チェックボックスをオンにしますが、=とみなされ、「確認」をチェック適切。 あなたのコードを更新し、三項演算子を使ってchecked = 'checked'を使うか、まったく何も使わないようにするだけです。

<%: Model.AllPlatforms[i].Platform.Name %> <input type="checkbox" name="PlatformIDs" value="<%: Model.AllPlatforms[i].Platform.PlatformID %>" <%: Model.GameData.Platforms.Any(p => p.PlatformID == i) ? "checked='checked'" : "" %> /><br /> 
+0

コンパイラエラーが発生しました。 –

+0

エラーは何ですか?おそらく単にタイプミス。 – Sapph

+0

私はそれを得たと思う。私のポストを1秒で更新します。おそらく、単に "p => PlatformId == i"の代わりに "p => p.PlatformId == i"が必要です。 :) – Sapph

0

あなたは正しい軌道に乗っているが、私はあなたが

<%: Model.GameData.Platforms.Any(p => PlatformID == i) ? "checked='true'" : string.Empty %> 
関連する問題