Asp.net mvc 下拉列表MVC的静态数据列表

Asp.net mvc 下拉列表MVC的静态数据列表,asp.net-mvc,html.dropdownlistfor,Asp.net Mvc,Html.dropdownlistfor,我想在模型中有一个静态数据列表,可以在viewmodel中使用,也可以在视图中下拉。我希望能够在我的控制器中以这种方式使用它: MaintenanceTypeList = new SelectList(g, "MaintenanceTypeID", "MaintenanceTypeName"), 并在我的视图中访问它,如下所示: @Html.LabelFor(model => model.MaintenanceTypeID) @Html.DropDownListFor(x =>

我想在模型中有一个静态数据列表,可以在viewmodel中使用,也可以在视图中下拉。我希望能够在我的控制器中以这种方式使用它:

   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的静态列表的任何帮助或示例

您可以使用列表初始值设定项:

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.
        };
    }
  }
}
然后你可以做像这样的事情

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

最后一行有点过头了,所以希望我没有犯错误。我觉得enum的结构更适合您的工作。

谢谢!我与你的第一个建议走了一条非常相似的路线,所以我把它标记为答案。我在这里找到了解决方案:
Enum.GetValues(typeof(MaintenanceType )).Select(m=>new SelectListItem{ Value = m, Text = m.GetDescription()} ).ToList()