首先 枚举类的功能是为了解释说明一些内容,并且一个数字对应一个内容
从而当使用枚举类的时候可以直接使用描述内容而不去使用数字,这样解读性更好。
那么如何让枚举类里面的内容在页面的下拉框中出现<option value="1">对应1的枚举内容</option>
第一步肯定是定义一个使用类 俩个成员变量 一个是id 一个 是内容
第二步是把枚举的类进行遍历将里面的 id和内容 一一读取出来 放入使用类中
第三步是将使用类 在页面上遍历 放入option中,或者使用html扩展直接将使用类集合绑定到下拉框中
举例: 拿经常使用的状态 枚举类
public enum Status
{
Paid = 1,
Ticketed = 2,
Sent = 3,
Cancelled = 4,
Confirmed = 5,
Modified = 6,
Deposit = 7
}
这些状态想要在页面中下拉框展示
第一步,建立使用类
public class TourOrderStatus
{
public string Id { get; set; }
public string Status { get; set; }
}
第二步将枚举 状态 循环遍历将 id和内容 赋给使用类
public List<TourOrderStatus> GetTourOrderStatus()
{
var statuses = new List<TourOrderStatus>();
var enums = Enum.GetValues(typeof(Status));
foreach (var e in enums)
{
TourOrderStatus status = new TourOrderStatus
{
Status = e.ToString(),
Id = (Array.IndexOf(enums, e) + 1).ToString()
};
statuses.Add(status);
}
//这里可以对使用类 添加只在页面上使用的新的状态 并不是枚举类中的状态
statuses.Insert(0, new TourOrderStatus { Id = "0", Status = "All" });
statuses.Insert(1, new TourOrderStatus { Id = "-1", Status = "Normal" });
statuses.Insert(8, new TourOrderStatus { Id = "8", Status = "Pending" });
return statuses;
}
第三步 页面遍历使用类 此举例使用了html扩展下拉
控制器中:接收了使用类然后绑定给下拉框
var status = bll.GetTourOrderStatus();
if (status != null && status.Any())
{
ViewBag.Status = new SelectList(status, "Id", "Status", "All");
}
页面中:直接展示
@Html.DropDownList("Status", null, new { @class = "bs-select form-control input-small input-inline" })