[英]Set the selected item in dropdownlist in MVC3
我必须在视图中为下拉列表设置所选项目。 但它不起作用。
//视图
<div class="editor-label">
@Html.LabelFor(model => model.Gender)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.Gender,Model.GenderList)
</div>
//模型
[Required(ErrorMessage = "Please select gender!")]
[Display(Name = "Gender")]
public string Gender { get; set; }
public IEnumerable<SelectListItem> GenderList
{
get
{
return new[]
{
new SelectListItem { Value = "0", Text = "Select" },
new SelectListItem { Value = "1", Text = "Male" },
new SelectListItem { Value = "2", Text = "Female" },
};
}
}
性别属性的值需要在列表中选择。 还是行不通。
哪里我错了?
首先,创建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的新实例并将其发送到视图。
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
var viewModel = new MovieViewModel
{
Genre = "2"
};
return View(viewModel);
}
}
最后,视图使用ASP.NET包装器[Html.DropDownListFor()] [1]显示下拉列表。
@model MvcApplication1.Models.MovieViewModel
<!DOCTYPE html>
<html>
<head>
<title>My movie</title>
</head>
<body>
<div>
@Html.DropDownListFor(m => m.Genre, Model.GenreList)
</div>
</body>
</html>
然后根据ViewModel自动选择所选值。 无需手动设置对象SelectListitem的Selected属性。
SelectListItem
类型具有Selected属性,对于要设置为选中的项,您需要为true
。
您可以静态设置它,如下所示:
public IEnumerable<SelectListItem> GenderList
{
get
{
[...]
new SelectListItem { Value = "0", Text = "Select", Selected = true},
[...]
}
}
或者在集合中枚举与Gender
值匹配的内容:
var selected = GenderList.SingleOrDefault(item => item.Text.Equals(this.Gender));
if (selected != null)
selected.Selected = true;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.