ITPub博客

首页 > Linux操作系统 > Linux操作系统 > asp.net mvc中使用Dropdownlist

asp.net mvc中使用Dropdownlist

原创 Linux操作系统 作者:fangqm 时间:2011-12-23 11:29:29 0 删除 编辑

例1:如果在Action方法中有如下代码:

List<SelectListItem> items = new List<SelectListItem>(); items.Add(new SelectListItem { Text = "Kirin", Value = "29" });
items.Add(
new SelectListItem { Text = "Jade", Value = "28", Selected = true});
items.Add(
new SelectListItem { Text = "Yao", Value = "24"});
ViewData["list"] = items;

在View中这样使用:<%=Html.DropDownList("list")%> 

例2:如果Action中代码如下:

List<SelectListItem> items = new List<SelectListItem>();
items.Add(new SelectListItem { Text = "Kirin", Value = "29" });
items.Add(new SelectListItem { Text = "Jade", Value = "28"});
items.Add(new SelectListItem { Text = "Yao", Value = "24"});
this.ViewData["list"] = items;
this.ViewData["selected"] = 24;

View中的代码如下:

<%=Html.DropDownList("selected", ViewData["list"] as IEnumerable<SelectListItem>)%>

那么辅助方法将ViewData["list"]绑定为下拉框,然后从ViewData中获取key为selected的项,并将下list中Value值与该项的值相等的SelecteListItem设为默认选中项。

以上两种方法尽管可以实现DropDownList的正确显示,但并非最佳实践。

 

最佳方法:

ASP.NET MVC为DropDownList和ListBox(都在html中使用select标记)准备了一个辅助类型:SelectList。SelectList继承自MultiSelectList,而后者实现了IEnumerable。也就是说,SelectList可以直接作为Html.DropDownList方法的第二个参数。

MultiSelectList包含四个属性,分别为:

  • Items:用于在select标记中出现的列表,通常使用option标记表示。IEnumerable类型。
  • DataTextField:作为option的text项,string类型。
  • DataValueField:作为option的value项,string类型。
  • SelectedValues:选中项的value值,IEnumerable类型。

显然,作为DropDownList来说,选中项不可能为IEnumerable,因此SelectList提供了一个新的属性:

  • SelectedValue:选中项的value值,object类型。

同时,SelectList的构造函数如下所示:

public SelectList(IEnumerable items, string dataValueField, string dataTextField, object selectedValue)
    : base(items, dataValueField, dataTextField, ToEnumerable(selectedValue)) {
    SelectedValue = selectedValue;
}

于是我们的代码变为:

var users = GetUsers();
var selectList = new SelectList(users, "Age", "Name", "24");
this.ViewData["list"] = selectList;

<%=Html.DropDownList("list")%>
这才是MVC最佳方案
 
转自奎宇工作室

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23109131/viewspace-713830/,如需转载,请注明出处,否则将追究法律责任。

下一篇: sql数据恢复
请登录后发表评论 登录
全部评论

注册时间:2010-03-24

  • 博文量
    298
  • 访问量
    722270