MVC4 绑定下拉框方法,解决编辑时不绑定值

后台:

        public ActionResult Modify(int id)
        {
            //3.1.1 检查id
            //3.1.2根据id查询数据
            Models.Student stu = (from s in db.Students where s.Id == id select s).FirstOrDefault();

            //方法一、查询班级数据,并 做成 下拉框 选项集合
            //List<Models.Class> listClass = (from c in db.Classes where c.CIsDel == false select c).ToList();
            //ViewBag.classList = listClass;

            //方法二  查询班级数据,并转成 下拉框选项 集合
            List<SelectListItem> listClass = db.Classes.Where(c=>c.CIsDel==false).ToList()//先查询数据 并 转成 实体List集合
                .Select( c=> new SelectListItem() { Text = c.CName, Value = c.CID.ToString(), Selected = (stu.CId == c.CID) }).ToList();//将实体集合 转成 SelectListItem集合
            //将 下拉框选项 集合 设置给 ViewBag ,用以传递 到 视图
            ViewBag.classList = listClass;


            //SelectList

            //3.1.加载视图,并传递 要修改的数据
            return View(stu);
        }

前台,分别对应上面的方法一和方法二。


    <table>
        <tr>
            <td>姓名:</td>
            <td><input type="text" name="Name" value="@Model.Name" /></td>
        </tr>
        <tr>
            <td>班级:</td>
            <td> 
                @* 这是方法一*@
                @*<select name="CID">
                @foreach (Class s in @ViewBag.classList as List<Class>) 
                {
                    if(s.CID == Model.CId){
                        <option selected value="@s.CID">@s.CName</option>
                    }else{
                        <option value="@s.CID">@s.CName</option>
                    }
                }
                </select>*@
               @* 这是方法二*@
                @Html.DropDownList("CId", ViewBag.classList as IEnumerable<SelectListItem>)

 
            </td>
        </tr>
    </table>

后来,发现 ,编辑时,绑定下拉框没效,那是因为名字相同,看代码

                        @* @Html.DropDownList("BelongCollege", ViewBag.BelongCollege as IEnumerable<SelectListItem>)*@
                         @Html.DropDownListFor(model=>model.BelongCollege, ViewBag.BelongCollegeEnum as IEnumerable<SelectListItem>)
@*                        <select name="BelongCollege" id="BelongCollege" class="valid">
                            @foreach (var s in (@ViewBag.BelongCollege as IEnumerable<SelectListItem>))
                            {
                                if (int.Parse(s.Value) == Model.BelongCollege)
                                {  
                                <option selected value="@s.Value">@s.Text</option>  
                                }
                                else
                                {  
                                <option value="@s.Value">@s.Text</option>  
                                }                           
                            }
                        </select>*@

第一行是因为名字相同,BelongColleg 和ViewBag.BelongCollege的名字相同,无论用何种方式,都是绑定不上的。只能更改后面的。太恶心了,调这个问题调了很久。







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值