【问题标题】:dropdown list asp mvc下拉列表 asp mvc
【发布时间】:2012-08-17 17:07:39
【问题描述】:

我想为我的模型类的某些属性生成一个下拉列表。我正在开发一个 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() 在这种情况下有效吗?

【问题讨论】:

  • 如果在控制器中创建一个包含valuetext 变量的列表,您可以使用它。或者你可以使用@html.dropdownlist()

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


【解决方案1】:

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

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

然后,就可以在DropDownListForhelper中使用了

@Html.DropDownListFor(m => m.entree_mat_h, values)
@Html.DropDownListFor(m => m.entree_mid_h, values)
....

【讨论】:

    【解决方案2】:

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

    所以你会做这样的事情:

       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)
    

    或者类似的东西。

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

    【讨论】:

    • 我比我更喜欢 Kroliks 版本,更整洁。
    【解决方案3】:

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

    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")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多