.Net Mvc中使用Jquery EasyUI控件讲解(三)下拉列表选择控件DropDownListFor使用讲解,动态提供下拉选项
深山老妖浏览:9832019-03-19 09:50:28本文累计收益:0我也要赚钱

本文讲解.Net Mvc中下拉列表控件DropDownListFor的使用方法,解决方案有很多,本文的主要实现思路是,将系统中使用的所有下拉列表选项内容存储到数据库的表中,然后在项目中创建一个公共类根据传入字段分类返回对应的选项列表,返回类型为IEnumerable<SelectListItem>,可以直接提供给DropDownListFor作为下拉选项使用,下面进行详细讲解。

一、存储下拉列表选项的表结构
CREATE TABLE [dbo].[SYS_DICTIONARY](
         [ID] [nvarchar](36) NOT NULL,--ID
         [SORT] [nvarchar](20) NULL,--分类(跟数据表字段名一致)
         [NAME] [nvarchar](60) NULL,--中文名称
         [VALUE] [nvarchar](40) NULL,--下拉列表text值
         [NVALUE] [nvarchar](40) NULL,--下拉列表value值
         [LISTORDER] [nvarchar](20) NULL,--显示顺序
 CONSTRAINT [PK_SYS_DICTIONARY] PRIMARY KEY CLUSTERED
(
         [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

下拉列表包含显示文本(Text)跟选项值(Value),实际开发中显示文本一般是中文的,值可以设置为数字型的,也可以直接使用中文。SORT分类字段针对系统中每个下拉列表值是唯一的,用于区分查询不同下拉列表选项,中文名称只用于备注是哪个下拉列表,VALUE是下拉列表显示的内容(TEXT),NVALUE是下拉列表选择的值(VALUE),数据样例如下:

这里没有使用NVALUE字段,项目中下拉列表的Text和Value都使用汉字。

二、调用获取选项的公用类
    /***********根据SYS_DICTIONARY库,构造下拉列表框的值****************/
    /** 参数sort:SYS_DICTIONARY库里的分类*****************************/
    /** 使用方法:@Html.DropDownListFor(model => model.SOURCE, KwstuCallCenter.Models.GetDropDownListItem.GetSelectList("SOURCE"))*/
    public static class GetDropDownListItem
    {
        public static IEnumerable<SelectListItem> GetSelectList(string sort)
        {
            NewSystemDbContent db = new NewSystemDbContent();
            var selectList = db.SYS_DICTIONARY.Where(a => a.SORT == sort).OrderBy(a => a.LISTORDER).ToList();
            SYS_DICTIONARY empty = new SYS_DICTIONARY();
            empty.VALUE = "-1";
            empty.VALUE = null;
            selectList.Insert(0, empty);
            SelectList pList = new SelectList(selectList, "VALUE", "VALUE");
            return pList;
        }
    }

公用类主要就是根据sort字段进行查询,获取对应下拉列表的选项,然后返回IEnumerable<SelectListItem>类型的列表供前台使用。

三、前台调用方法

@Html.DropDownListFor(model => model.RULEID, NewSystem.Models.GetRoleItem.GetSelectList())

使用NewSystem.Models.GetRoleItem.GetSelectList()代码直接调用。

四、页面效果

评论列表
发表评论
+ 关注