下拉列表asp mvc

时间:2012-08-22 09:42:23

标签: asp.net asp.net-mvc asp.net-mvc-3 razor

我想为我的模型类的某些属性生成一个下拉列表。我正在开发一个mvc .net应用程序,我正在使用razor引擎进行查看。这是我的班级:

public class present
{       
    public DateTime jour { get; set; }
    public int entree_mat_h { get; set; }
    public int entree_mid_h { get; set; }
    public int sortie_mat_h { get; set; }
    public int sortie_mid_h { get; set; }
    public int entree_mat_m { get; set; }
    public int entree_mid_m { get; set; }
    public int sortie_mat_m { get; set; }
    public int sortie_mid_m { get; set; }
    public string mac { get; set; }
    public string ip { get; set; }
}

例如,我想显示一个下拉列表,其中每个属性为整数,值为0到60。 @ html.dropdownlistfor()是否适用于这种情况?

3 个答案:

答案 0 :(得分:8)

在您的视图中声明可能值的列表,在您的情况下为0到60

@{ var values = new SelectList(Enumerable.Range(0, 60)); }

然后,您可以在DropDownListFor帮助

中使用它
@Html.DropDownListFor(m => m.entree_mat_h, values)
@Html.DropDownListFor(m => m.entree_mid_h, values)
....

答案 1 :(得分:0)

是的,但您需要使用您想要的值将自定义选择列表传递给它。

所以你会做这样的事情:

   var list = new List<SelectListItem>();

   for(int i=1; i < 61; i++)
   {
        list.Add(new SelectListItem{Text = i, Value = i});
   }

   var sl = new SelectList(items, "Value", "Text");

然后你需要将它传递给模型

然后在视图中,您将执行以下操作:

 @Html.DropDownListFor(x => x.Quantity, @Model.Quantity)

或类似的东西。

显然我使用假名,所以你需要让它适合你自己的模型。

答案 2 :(得分:0)

使用此扩展方法从源构建下拉列表(选择投影到键和值的所有值)。 示例

public static IEnumerable<SelectListItem> ToDropDown<TSource>(this IEnumerable<TSource> source, Func<TSource, string> keySelector, Func<TSource, string> elementSelector, Func<TSource,bool> selected)
        {
            if (source == null)
            {
                return new List<SelectListItem>();
            }
            return source.Select(c => new SelectListItem { Value = keySelector(c), Text = elementSelector(c), Selected = selected(c) }).ToList();
        }

填写你的viewBag

ViewBag.Languages = languageRepository().GetAll().ToList().ToDropDown(c => c.ID, c => c.Description, c => c.ID == "EN");

最后是剃刀

 @Html.DropDownList("ddLanguages", (IEnumerable<SelectListItem>)ViewData.Languages, "Please Select")