2013-10-10 19 views
2

我试图避免在mvc视图内使用foreach,正如我在很多答案中所见,这是一个很好的做法。但我并不完全知道如何实现它。避免在mvc视图内使用mv单选按钮的编辑器模板foreach

我想用银行的名单,以张贴之一,创建一批单选按钮(它的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属性?

UPDATE:

我一直在努力使这项工作,但目前的局势

视图模型:

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

回答

1

你只需要引用要绑定

@model CompanyBank 


@Html.RadioButtonFor(x => x.PropertyName) 
@Html.LabelFor(x => x.PropertyName) 

确保你的名字你的观点CompanyBank.cshtml因为IEnumerable的,你不能定义编辑视图名称的属性名称。

相关问题