Избегайте использования foreach с помощью шаблона редактора в mv radiobutton в представлении mvc

Я стараюсь избегать использования foreach в представлении mvc, так как я видел довольно много ответов, это хорошая практика. Но я не совсем понимаю, как этого добиться.

Я хотел бы использовать список банков, чтобы создать группу переключателей, чтобы разместить один из них (на самом деле это идентификатор)

Быть моделью представления:

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 в модели??

ОБНОВИТЬ:

Я пытался сделать эту работу, но с текущей ситуацией

ViewModel:

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-код (смена идентификатора для каждой из них)

<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 вы не можете определить имя представления редактора.

Другие вопросы по тегам