@Html.DropDownList设置选中值无效

文章讲述了在ASP.NETMVC开发中遇到的一个问题,即在设置View页面性别下拉框选中值时,设置始终无法生效。经过排查,发现原因是Controller中ViewData的键值Sex与View中Html.DropDownList的name属性相同,导致DropDownList无法正确识别。解决方案是将ViewData中的键值改为mySex,同时在View中保持DropdownList的name属性为Sex,从而实现了选中值的正确显示。
摘要由CSDN通过智能技术生成

当我给View页面的,性别下拉框设置选中的值后,设置的值一直不起效。

这是我controller:sex的值1为男,2为女

 SysUser sysUser = _ISysUserservice.Find<SysUser>(id);
 SysUserDTO userDTO = Mapper.Map<SysUser, SysUserDTO>(sysUser);
 List<SelectListItem> sexList = new List<SelectListItem>();
 if (userDTO.Sex==1)
 {
      sexList.Add(new SelectListItem { Text = "男", Value = "1", Selected = true });
      sexList.Add(new SelectListItem { Text = "女", Value = "2" });
 }
 else
 {
      sexList.Add(new SelectListItem { Text = "男", Value = "1" });
      sexList.Add(new SelectListItem { Text = "女", Value = "2", Selected = true });
 }
 ViewData["Sex"] = sexList;

这是我view视图设置下拉框的区域:

@Html.DropDownList("Sex", ViewData["mySex"] as List<SelectListItem>)

根据userDTO实体对象的性别,设置选中的性别,一直不起效。

这里是视图:

通过不断在网上找资料和测试,问题找到了,在controller里面的ViewData["Sex"]的key值“Sex”跟view上的name的值:“Sex”@Html.DropDownList("Sex", ViewData["mySex"] as List<SelectListItem>),会造成Html.DropDownList不识别,所以需要把ViewData里面的key值与view页面,dropdownlist的name值区分开就行。

修改后controller:

SysUser sysUser = _ISysUserservice.Find<SysUser>(id);
SysUserDTO userDTO = Mapper.Map<SysUser, SysUserDTO>(sysUser);
List<SelectListItem> sexList = new List<SelectListItem>();
if (userDTO.Sex==1)
{
     sexList.Add(new SelectListItem { Text = "男", Value = "1", Selected = true });
     sexList.Add(new SelectListItem { Text = "女", Value = "2" });
}
else
{
     sexList.Add(new SelectListItem { Text = "男", Value = "1" });
     sexList.Add(new SelectListItem { Text = "女", Value = "2", Selected = true });
}
ViewData["mySex"] = sexList;

view对应@Html.DropDownList这样写:

@Html.DropDownList("Sex", ViewData["mySex"] as List<SelectListItem>)

然后就可以正常选中了:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值