我试图避免在mvc视图中使用foreach,正如我在很多答案中看到的那样,这是一个很好的做法。但我并没有完全了解如何实现它。
我想用一个银行列表来创建一堆单选按钮,以便发布其中一个(实际上是它的id)
成为viewmodel:
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)
}
答案 0 :(得分:1)
您只需要引用要绑定的属性名称
@model CompanyBank
@Html.RadioButtonFor(x => x.PropertyName)
@Html.LabelFor(x => x.PropertyName)
确保将视图命名为CompanyBank.cshtml,因为在IEnumerable中您无法定义编辑器视图名称。