かなりの数の回答で見たように、mvc ビュー内で foreach を使用しないようにしています。これは良い習慣です。しかし、私はそれを達成する方法を正確に理解していません。
バンクのリストを使用して、ラジオ ボタンの束を作成し、そのうちの 1 つを投稿したいと思います (実際には ID です)。
ビューモデルであること:
public class CashbackOfferViewModel
{
...
public string DepositBank { get; set; }
public IEnumerable<CompanyBank> DepositBanks { get; set; }
}
次のようなものを使用したいと思います:
@Html.EditorFor(m => m.DepositBanks)
これにより、適切なラジオ ボタンが作成されます。しかし、モデルを使用する場合、エディター テンプレートを作成するときに
@model CompanyBank
@Html.RadioButtonFor(??????)
@Html.LabelFor(????)
モデルの DepositBank プロパティにバインドするにはどうすればよいですか??
アップデート:
私はこれを機能させようとしてきましたが、現在の状況では
ビューモデル:
public class CashbackOfferViewModel
{
....
public string DepositBankCode { get; set; }
public IEnumerable<CompanyBank> DepositBanks { get; set; }
}
EditorTemplate;
@model CompanyBank
<tr>
<td>
@Html.RadioButtonFor(m => m.CompanyBankCode, Model.CompanyBankCode)
<span>@Html.LabelFor(m => m.CompanyBankName, Model.CompanyBankName)</span>
</td>
</tr>
しかし、ロード時にすべてのラジオボタンをチェックしています。実際に生成されるhtmlはこれです(それぞれのIDを変更します)
<input checked="checked" id="DepositBanks_0__CompanyBankCode" name="DepositBanks[0].CompanyBankCode" type="radio" value="HBOS">
基本的に私はビューでこれを使用したいと思います:
@Html.EditorFor(m => m.DepositBanks)
これの代わりに
@foreach (var depositBank in Model.DepositBanks)
{
@Html.RadioButtonFor(m => m.DepositBankCode , depositBank.CompanyBankCode)
}