MVC 中的@Html.DropDownList下拉框的使用


MVC 中的下拉框 實現方式,下面為大家介紹一個我自己認為比較好用的實現方式,而二話不說直接上代碼:

第一步: 后台代碼

//公共的方法
//在每次需要展示下拉框的時候,需要調用一下這個方法 【數據源是DB數據庫】
private void _ProductExtensions( BtDbContext _ctx )
        {
            #region 商品分類

            List<SelectListItem> listProductTypes = new List<SelectListItem>();
            listProductTypes.Add(new SelectListItem()
            {
                Text = "商品分類",
                Value = "0"
            });

            //直接查詢數據庫中的數據,將其綁定到list中
            listProductTypes.AddRange(_ctx.ProductTypes.Select(t => new SelectListItem()
            {
                Text = t.TypeName,
                Value = t.TypeId.ToString()
            }).ToList());


            ViewData["ProductTypes"] = listProductTypes;

            #endregion
}


//枚舉的創建
 /// <summary>
        /// 本系統訂單狀態
        /// </summary>
        [Serializable]
        [ProtoContract]
        [Description("訂單狀態")]
        public enum OrderStatus
        {
            /// <summary>
            /// 全部
            /// </summary>
            [Description("全部")]
            [ProtoEnum(Value = 0)]
            NoSetting = 0,

            /// <summary>
            /// 未派單
            /// </summary>
            [Description("未派單")]
            [ProtoEnum(Value = 1)]
            NoSendOrder = 1,
}

//調用的方式同上,唯一不同的是數據源 這里使用的數據源是 來自枚舉

private void _OrderExtensions() { #region 訂單狀態 Dictionary<string, int> dic = new Dictionary<string, int>(); dic = typeof(EnumHelper.OrderStatus).ToDictionary(); //這個ToDictionary()是自己擴展的一個方法 List<SelectListItem> listOrderState = new List<SelectListItem>(); listOrderState.Add(new SelectListItem() { Text = "訂單狀態", Value = "" }); foreach (var item in dic) { listOrderState.Add(new SelectListItem() { Text = item.Key, Value = item.Value.ToString() }); } ViewData["OrderStates"] = listOrderState; #endregion }

 補充擴展方法:

 

    public static Dictionary<string, int> ToDictionary(this Type type)
        {
            Dictionary<string, int> dic = new Dictionary<string, int>();

            foreach (var e in Enum.GetValues(type))
            {
                var des = e.GetType().GetField(e.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), false).FirstOrDefault<object>() as DescriptionAttribute;
                string key = e.ToString();

                if (des != null)
                {
                    key = des.Description;
                }

                dic.Add(key, (int)e);
            }

            return dic;
        }

 

第二步:前端調用

@{

    //商品分類  初始加載
    List<SelectListItem> listProductTypes = ViewData["ProductTypes"] as List<SelectListItem>;
}

//直接在MVC 標簽中調用就ok了
 @Html.DropDownList("TypeId", listProductTypes, new
               {
                   datatype=@"/^[1-9]+$/",
                   sucmsg=" ",
                   nullmsg="請選擇商品分類",
                   errormsg="請選擇商品分類"
               })

第三步:展示結果:

 1、讀取DB 數據源的樣式

 

2、讀取枚舉的樣式圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM