1

私はまだ MVC に頭を悩ませており、単一のモデル アプリケーションからより複雑なアプリケーション (マルチモデル) に移行しました。

EF がデータベースとテーブルを作成できるように、Code First の方法でモデルをセットアップしました。

次の Person モデルがあるとします。

  • 名前
  • 電話
  • 住所
  • StateId

次に、次の状態モデルがあります。

  • StateId

これらのモデルの両方にコントローラーとビューを作成しました。

個人編集ビューで、現在 State テーブルにあるすべての状態のコンボ ボックスを表示したいと考えています。

私の見解では、次のもののみが表示されます。

@model IEnumerable<myProject.Models.Person>

コンボ ボックスに入力できるように、すべての州名を含める方法がわかりません。

これを達成するための最良の方法は何ですか?

4

2 に答える 2

1

これを行うには、少なくとも 2 つの方法があります。最も簡単な「手っ取り早い」方法は、ViewBag/ViewData/Session を使用して状態のリストをそこに保存することです。1 つの (より良い IMO) 代替手段は、Person、States のコレクション、およびおそらくどの State が選択されたかを含む ViewModel を作成することです。次のようになります。

public class PersonViewModel
{
    public Person Person { get; set; }

    public State SelectedState { get; set; }

    // this might also be IEnumerable<SelectListItem> depending on what you want to do.
    public IEnumerable<State> States { get; set; }
}

次に、コンストラクターで、ViewModel にデータを入力するメソッドを呼び出します。そのViewModelをViewにバインドし、適切と思われる方法で使用してください。

于 2013-09-28T00:03:01.870 に答える