0

DropDownListFor() で実装された、ドロップダウン リストを持つビューにフォームがあります。このビューは、ドロップダウンのオプションを保持する SelectList プロパティと、ドロップダウンの選択された値を保持する別のプロパティを持つ ViewModel に厳密に型指定されます。これは正常に機能していますが、私がやりたいことは、選択した値とドロップダウンの選択したテキストの両方を 2 番目のプロパティに保持することです。これを行う理由は、フォームがセルフポストするときに、各選択のテキストと値の両方を取得できるようにするためです。

選択した値のプロパティを int から KeyValuePair に変更しようとしましたが、フォームの送信時にペアの int 部分のみが設定されます。

おそらく、これを達成するためのより良い方法があるでしょう。私は、私の方法の部分的な再設計を含むすべての提案を受け入れます.

コントローラー (SelectList の構築)

SelectList leadTypeGroups = new SelectList(_enrollmentRepository.GetLeadTypeGroups(), "Key", "Value");

ビューモデル

public KeyValuePair<int, string> LeadTypeGroupID { get; set; }
public SelectList LeadTypeGroups { get; set; }

意見

@Html.DropDownListFor(selected => Model.LeadTypeGroupID, Model.LeadTypeGroups, " ")
4

2 に答える 2

1

要求ごとに、サーバーがデータベース (またはメモリ内キャッシュ) から値をプルするようにします。または、ドロップダウンの選択が変更されるたびに適切なテキストで更新する JavaScript を使用した非表示フィールドを用意します。

于 2012-04-17T17:12:18.940 に答える
0

ViewModel を List に変更し、for ループを使用してリスト内の各項目のドロップダウンを吐き出します。何かのようなもの...

意見

@for( int i = 0; i < Model.LeadTypeGroupIDs; i++ )
{
  @Html.DropDownListFor(x => Model.LeadTypeGroupIDs[i], Model.LeadTypeGroups, " ")
}

ビューモデル

public List<string> LeadTypeGroupIDs { get; set; }
public SelectList LeadTypeGroups { get; set; }
于 2012-04-13T15:09:18.997 に答える