2011-11-13 11 views
0

私は自分のコントローラにcreateメソッドを持っており、これはビューを開きます。ビューでは、ユーザーはデータを入力してモデルにデータを入力できます。そのデータの一部は選択リストからのものです。これらの選択リストは、データベースから取り込まれます。その後、モデルに選択リストデータをビューに送信するか、データ自体を取得する必要がありますか?

public IEnumerable<SelectListItem> Statuses { get { return GetStatusType(); } } 

パスステータスと:

a)は、コントローラに選択リストのデータを取得し、このようにフィールドを移入:私が知りたいのですがどのような

さはIべきステータスをループし()のために行うとモデルで、次のしているコントローラで、ビューで何もしない選択リストとオプションのHTML

B)を作成:

SelectHelperはすべての選択リストとオプションHTMLを取得するC#コードです。

c)いくつかの良い方法:

答えて

0

私は最初のものと一緒に行きます。お使いのコントローラ

//上でこの

ヘルパーメソッド

public List<SelectListItem> getAllSelectList(List<Items> lists) 
      { 
       List<SelectListItem> selectListItems = new List<SelectListItem>(); 
       foreach (Term term in lists) 
       { 
        selectListItems.Add(new SelectListItem() { Text = term.yourselectfield, Value = term.your value }); 

       } 
       return selectListItems; 
      } 

のようないくつかのことは、あなたがある場合は、GetStatusType()方法は、あなたのビューに

ViewData.selectlist=getAllSelectList(GetStatusType()); 

オブジェクトのリストを返しますと仮定します剃刀を使用して

@Html.DropDownList("selectlist", null, "Choose") 

または

<%: Html.DropDownList("selectlist", null, "Choose") %> 
+0

上記の方法でパフォーマンスに違いがあると思いますか? –

+0

私はそうは思いませんが、最初のテストとデバッグは簡単です。 – tkt986

0
  1. そこにあなたのGetStatusTypeの静的ルックアップクラス&静的メソッドを作成します。
  2. データベースから最初にロードした後に、すべてのステータスタイプをキャッシュします。
  3. 表示するビューからGetAllStatusTypeを呼び出します。
+0

ステータスタイプをキャッシュする方法を説明できますか? –

+0

プライベート静的IEnumerable ステータスのようなことができます。 public IEnumerable ステータス { get {return statuses ?? (ステータス= GetStatusType()); } } –

0

IEnumerable < Statusesプロパティを持つビューモデルを作成します。 IDと名前があなたのステータスモデルで適切なプロパティに設定されている

@Html.DropDownListFor(model => model.PageMeta.StatusID, new SelectList(Model.Statuses, "Id", "Name"), "Some default which has no value") 

:次に、あなたのビューで選択要素を表示します。

関連する問題