【问题标题】:Avoid foreach using Editor Template in mv radiobutton within an mvc view避免在 mvc 视图中使用 mvc 单选按钮中的编辑器模板进行 foreach
【发布时间】:2013-10-18 06:27:45
【问题描述】:

我试图避免在 mvc 视图中使用 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 属性?

更新:

我一直在努力做到这一点,但目前的情况

视图模型:

public class CashbackOfferViewModel
{
    ....
    public string DepositBankCode { get; set; }
    public IEnumerable<CompanyBank> DepositBanks { get; set; } 
}

编辑器模板;

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

【问题讨论】:

    标签: asp.net-mvc-4 razor radio-button radiobuttonfor


    【解决方案1】:

    你只需要引用你想绑定的属性名

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

    确保您将视图命名为 CompanyBank.cshtml,因为在 IEnumerable 中您无法定义编辑器视图名称。

    【讨论】:

      猜你喜欢
      • 2011-12-01
      • 2013-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-14
      • 2016-04-27
      • 2013-08-05
      • 2019-06-30
      相关资源
      最近更新 更多