问题描述
@Html.DropDownListFor(m=>m.TB_Bus_DeptUser.ToList()[0].DeptId,ViewData["DeptData"]asIEnumerable<SelectListItem>,new{@class="form-controlwid_p_100",@id="ddlDeptId",@title="组织机构"})
请看如上代码,想要的效果就是能绑定到关系表的字段,但是我这样写没有效果,求高人指点
解决方案
解决方案二:
DeptData这里面已经取出来要绑定的值了吗?m.TB_Bus_DeptUser.ToList()[0].DeptId=>先把这里改成固定的值然后你看看DeptData能显示出来值吗如果可以的话那就是m.TB_Bus_DeptUser.ToList()[0].DeptId引起的
解决方案三:
这里涉及到如何缓存DropDownList的所有数值问题(特别是提交表单,验证不通过,需要再次返回本页面的情况),如下假设Model中包含属性ReadyTimeHourList(是一个List<SelectListItem>),由于页面中没有控件对此数据进行绑定,那么在提交表单之后传回给action的model中将收集不到此数值,我们用HiddenFor在页面中去缓存List的数值是不能成功的(将括号中的值换作ViewData["HourList"]也是行不通的),原因是HiddenFor只能缓存单个数值。@Html.HiddenFor(m=>m.ReadyTimeHourList)
既然用页面控件缓存的方式行不通,如果解决上述问题呢?请看如下代码,如果验证不能通过,那么需要重新绑定ViewData["HourList"]的数值,实际上这里涉及到了ViewData生命周期的问题,由于提交表单之后,代码进入了如下的Action中,超出了原来的ViewData的声明周期,因此原来保存的ViewData的值将失效,所以需要再次的重新绑定。[HttpPost]publicActionResultEricSunAction(EricSunModelmodel){if(!ModelState.IsValid){GenerateReadyTimeViewData();returnView(model);}//model.ReadyTimeHour;returnRedirectToAction("OtherActionName");}
我上面说得不是很详细,我也是看了别人的帖子,然后给你发的,你可以参考别人的帖子:http://www.cnblogs.com/mingmingruyuedlut/p/3557125.html,希望可以帮到你。
解决方案四:
m=>m.TB_Bus_DeptUser.ToList()[0].DeptId这样怎么绑定。写个model:publicclassMyModel{publicGuidDeptId{get;set}}controller:publicActionRestultxxx(){MyModelmodel=newMyModel();model.DeptId=TB_Bus_DeptUser.ToList()[0].DeptId;returnView(model);}View:@modelxxx.MyModel@Html.DropDownListFor(m=>m.DeptId,ViewData["DeptData"]asIEnumerable<SelectListItem>,new{@class="form-controlwid_p_100",@id="ddlDeptId",@title="组织机构"})