【问题标题】:Razor MVC Drop down is not displaying selected valueRazor MVC 下拉菜单不显示所选值
【发布时间】:2014-05-22 17:15:01
【问题描述】:

我可以成功地从下拉列表中选择一个值,并将其正确保存到数据库中。但是,当我返回查看页面时,下拉列表看起来之前没有选择任何值。为什么不显示选中的值?

查看:

@Html.DropDownList("UnitOfMeasure",ViewData["UnitOfMeasure"] as SelectListItem[], new { @class = "form-control" })

控制器:

        [HttpGet]
    public ActionResult Edit(int id)
    {
         this.ViewBag.UnitOfMeasure = this.GetUomList();
    }


        private IEnumerable<SelectListItem> GetUomList()
    {
        List<SelectListItem> uomList = new List<SelectListItem>();            
        uomList.Add(new SelectListItem() { Value = "", Text = "Select..." });

        uomList.Add(new SelectListItem() { Text = "CC" });
        uomList.Add(new SelectListItem() { Text = "CF" });
        return uomList;
    }

【问题讨论】:

  • 我返回查看页面是什么意思?您是否正在发布帖子以将其保存到数据库中?如果是,您可以粘贴该代码吗?
  • @Yogiraj - 我的意思是,当我关闭网页时,然后将其重新打开。我可以看到数据库中保存了正确的值,但下拉菜单显示“选择...”,就好像不存在以前的值一样。

标签: asp.net-mvc entity-framework razor


【解决方案1】:

您需要选择具有Selected 属性的项目:

uomList.Add(new SelectListItem() { Text = "CC", Selected = true });

【讨论】:

  • 这不会导致它始终是选定的项目吗?
  • @devlincarnate 否。Selected 属性只是初始设置。您仍然可以选择其他值。
【解决方案2】:

您必须根据您在数据库中存储的内容将该项目标记为选中。您可以执行以下操作:

private IEnumerable<SelectListItem> GetUomList()
{
    //Get selected Value or text... whatever you are storing in the db
    // I am assuming selectedText is being stored in the database
    var selectedValueOrText = GetThisFromDatabase();

    List<SelectListItem> uomList = new List<SelectListItem>();            
    uomList.Add(new SelectListItem() { Value = "", Text = "Select..." });

    uomList.Add(new SelectListItem() { Text = "CC",Selected = selectedValueOrText =="CC" });
    uomList.Add(new SelectListItem() { Text = "CF",Selected = selectedValueOrText =="CF" });

   return uomList;
}

更新 上述方法的替代版本。 (IMO 改进了 :))

 private IEnumerable<SelectListItem> GetUomList()
 {
      //Get selected Value or text... whatever you are storing in the db
      // I am assuming selectedText is being stored in the database
      var selectedValueOrText = GetThisFromDatabase();
      var uomList = new List<string>
      {
          "Select...",
          "CC",
          "CF"
      };
      return uomList.Select(l => new SelectListItem
      {
          Text = l,
          Selected = selectedValueOrText == l
      });

  }

如果您展示了从数据库中获取值的方法,我可以进一步简化/改进我的答案。

【讨论】:

    猜你喜欢
    • 2017-07-16
    • 1970-01-01
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多