0

ビューモデルとビューのドロップダウンで使用できるモデル内のデータの静的リストが必要です。コントローラーでこのように使用できるようにしたい:

   MaintenanceTypeList = new SelectList(g, "MaintenanceTypeID", "MaintenanceTypeName"),

次のように私のビューでアクセスします。

@Html.LabelFor(model => model.MaintenanceTypeID)
@Html.DropDownListFor(x => x.MaintenanceTypeID, Model.MaintenanceTypeList, "-- Select --", new { style = "width: 150px;" })
@Html.ValidationMessageFor(x => x.MaintenanceTypeID)

現在、データベース内のデータにリポジトリ パターンを使用していますが、このデータは決して変更されないため、データベースに配置したくありません。それでもモデルとして欲しい。基本的に、私のドロップダウンリストは次のものを提供する必要があります:

Value                Text
-------------------------------------
Calibration          Calibration
Prevent              Preventative Maintenance
CalibrationPrevent   PM and Calibration

models/oop を使用した静的リストのヘルプまたは例を歓迎します

4

1 に答える 1

1

リスト初期化子を使用できます。

public static SomeHelperClass{
  public static List<SelectListItem> MaintenanceTypeList {
  get {
    return new List<SelectListItem> 
       { new SelectListItem{Value = "Calibration", Text = "Calibration"}
        ,new SelectListItem{ Value = "Prevent", Text = "Preventative Maintenance" } 
        ,etc.
        };
    }
  }
}

うまくいけば、私はどこかの中括弧を見逃していませんでした. 他の例については、「C# リスト初期化子」をグーグルで検索できます。SelectListCollectionの実際のコレクションが何であるかを頭の中で思い出すことはできませんが、キー値ペアなどのコレクションを持っていることが多いので、Listを受け入れるDropDownListのオーバーロードがあることは知っています。ビュー SelectListItems に変換します。someList.Select(i => new SelectListItem { Value = i.Key, Text = i.Value })

別のオプションは、値を列挙型に配置することです。その後、各列挙値で Description 属性を使用できます。

enum MaintenanceType {
   [Description("Calibration")]
   Calibration = 1,

   [Description("Preventative Maintenance")]
   Prevent = 2
}

次に、次のようなことができます

Enum.GetValues(typeof(MaintenanceType )).Select(m=>new SelectListItem{ Value = m, Text = m.GetDescription()} ).ToList()

最後の行は頭のてっぺんから少し外れていたので、間違いがなかったといいのですが。列挙型は、あなたがやろうとしていることに対してより適切に構造化されているように感じます。

于 2013-05-17T17:51:33.950 に答える