记录工作中遇到的问题及解决方法1

@Html.DropDownList的使用

在一般情况下使用的是DropDownListFor,这个可以直接跟后台返回视图的model绑定(m=>m.需绑定的字段),并且下拉框会自动选中与该字段匹配的值;
这次遇到一个问题就是,表单需要用到的是两张数据表,后台却只能返回一个model,我就只返回了一个数据字段多的表,另一个表使用的ViewBag返回到视图,这里就不能使用DropDownListFor,只能使用DropDownList了。

使用DropDownListFor简单多了,使用三个参数重载的,第一个参数表达式列出需要使用的字段。第二参数下拉框的数据来源,第三个参数就是下拉框的基本属性设置了;

后台把数据查出来返回ListSelectListItem应该是MVC自带的实体对象,里面只有三个参数,Text下拉框显示值,Value下拉框取值,Selected下拉框是否默认选择该值
后台代码:

ViewBag.typeList = Context.tb_base_public_type.Where(a => a.name.Equals("企业类型"))
                .Select(a => new SelectListItem {Text = a.value, Value = a.value}).ToList();

前台代码:

 @Html.DropDownListFor(m => m.ge_type, (List)ViewBag.typeList , new { @class = "layui-select", lay_verify = "required" })

在使用的时候发现,DropDownList没有设置默认值的重载,看到第三个参数是默认显示文本,但不是默认值,例如:“—请选择XXX—”,得到的值为空值
DropDownList的参数

这里不行就只有找其他方法了,那就只有在数据上做文章了,百度了下还真找到了一个,使用SelectList类;
SelectList也有很多实例化参数,我这里数据对象里只有一个值,就只用到两个参数(一个数据集合,一个默认选中项值);
如果数据集合里的对象不是单个值,就要使用四个参数的(一个数据集合,一个取值字段名称,一个显示字段名称,一个默认选中项的值)
后台代码:
后台使用SelectList
前台代码:

@Html.DropDownList("ge_type", (SelectList)ViewBag.typeList,new { @class = "layui-select", lay_verify = "required" })

到这里也就成功了!!!

你可能感兴趣的:(记录工作中遇到的问题及解决方法1)