我想为我的模型类的某些属性生成一个下拉列表。我正在开发一个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()是否适用于这种情况?
答案 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")