我有两种方法可以将我的值列表绑定到MVC3的下拉列表中。但不确定哪种差异和最好/更简单的绑定方式。
//代码
public List<SelectListItem> CountryList
{
get
{
return new List<SelectListItem>
{
new SelectListItem { Value = "1", Text = "Bangladesh" },
new SelectListItem { Value = "2", Text = "India" },
new SelectListItem { Value = "3", Text = "Nepal" },
new SelectListItem { Value = "4", Text = "SriLanka" },
};
}
}
(OR)
public SelectList StatusList()
{
List<SelectListItem> lstStatus = new List<SelectListItem>
{
new SelectListItem { Value = "1", Text = "Yes" },
new SelectListItem { Value = "2", Text = "No" },
};
return new SelectList(lstStatus, "Value", "Text", Status);
}
我是否有任何优点/缺点。我必须绑定这些值并获取/设置选定的值。哪种方法最适合?
请建议。
答案 0 :(得分:1)
我倾向于在MVC应用程序中使用 SelectListItem 的通用枚举。主要原因是当您将ViewModels与视图一起使用时更有意义。
假设我将电影存储在数据库中。我代表一部带有POCO课程的电影。
public class Movie
{
public string Genre { get; set; }
}
编辑影片的页面会收到ViewModel。
public class MovieViewModel
{
public string Genre { get; set; }
public IEnumerable<SelectListItem> GenreList
{
get
{
yield return new SelectListItem { Text = "Comedy", Value = "1" };
yield return new SelectListItem { Text = "Drama", Value = "2" };
yield return new SelectListItem { Text = "Documentary", Value = "3" };
}
}
}
ViewModel是我的模型,但具有个性化我的视图的其他属性,例如可用类型的列表。
最后在我看来,我使用ASP.NET包装器Html.DropDownListFor()填充我的下拉列表。
@model MvcApplication1.Models.MovieViewModel
<!DOCTYPE html>
<html>
<head>
<title>Index</title>
</head>
<body>
<div>
@Html.DropDownListFor(m => m.Genre, Model.GenreList)
</div>
</body>
</html>
然后使用ViewModel自动选择所选值。