zoukankan      html  css  js  c++  java
  • .net mvc Html.DropDownListFor 设置默认值无效

    错误描述:

    控制器部分:

    //从数据字典中加载下拉框 (使用DropDownListFor,SelectList 中不需要设置选中值,即便设置了选中值,也会优先读取Model中对应的值)

     ViewBag.Entity= new SelectList(dataDtos.FindAll(c => c.DictTypeName == "Entity"), "Value", "Name");

    视图部分:

     @Html.DropDownListFor(m => m.Entity, (SelectList)ViewBag.Entity, "----", new { @class = "form-control", placeholder = "" })

    进入编辑状态后发现,已保存的数据,DropDownList无法正常绑定。

    解决方法:产生这种问题的原因是实体中的字段 Entity 与 ViewBag的命名Entity一致,将两者名字改成不一致即可。

     //控制器部分:
    ViewBag.EntityList = new SelectList(dataDtos.FindAll(c => c.DictTypeName == "Entity"), "Value", "Name"); //视图部分: @Html.DropDownListFor(m => m.Entity, (SelectList)ViewBag.EntityList, "----", new { @class = "form-control", placeholder = "" })

    另外Razor视图循环绑定数组时,下拉框如果使用SelectList赋值,下拉框也是不能正常绑定的:

    @Html.DropDownListFor(m => m.NodeList[i].ContractNode, (SelectList)ViewBag.ContractNodeList, "请选择", new { @class = "form-control"})

    解决方式:后台传递IEnumerable<T>,而不是SelectList:

    @Html.DropDownListFor(m => m.NodeList[i].ContractNode, new SelectList(ViewBag.ContractNodeList, "Value", "Name", Model.NodeList[i].ContractNode), "请选择", new { @class = "form-control"})

     参考:https://stackoverflow.com/questions/2278056/dropdownlistfor-not-selecting-value

  • 相关阅读:
    封装( 增删改 查 )类
    php注释规范
    php访问mysql数据库
    php 文件限速下载代码
    jQuery鼠标事件汇总
    权限管理
    文件管理 打开-返回上级
    文件操作
    简单的文件上传
    ajax XML
  • 原文地址:https://www.cnblogs.com/riddly/p/9450950.html
Copyright © 2011-2022 走看看