2

かなりの数の回答で見たように、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)
}
4

1 に答える 1

1

バインドしたいプロパティ名を参照するだけです

@model CompanyBank


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

IEnumerable ではエディター ビュー名を定義できないため、必ずビューに CompanyBank.cshtml という名前を付けてください。

于 2013-10-10T13:20:02.653 に答える