【问题标题】:Multilevel dropdown list in razor page剃刀页面中的多级下拉列表
【发布时间】:2021-10-03 21:01:38
【问题描述】:

我有两个表,“projectstatus”和“developmentstatus”。

public class ProjectStatus
{
    public int ProjectStatusID { get; set; }
    public string Status { get; set; }
}

public class DevelopmentStatus
{
    public int DevelopmentStatusID { get; set; }
    public string Status { get; set; }
}

我必须实现的是一个多级下拉列表,其中包含这两个表作为它的下拉列表以及表项作为子下拉项。

下面的代码是下拉菜单的视图。

  <div class="form-group">
            <label asp-for="ProjectStatus" class="control-label">Project Status</label>
      
                        @Html.DropDownList("ProjectStatus", (IEnumerable<SelectListItem>)ViewBag.ProjectStatus, null, new { @class = "form-control" })
            
                        @Html.DropDownList("DevelopmentStatus", (IEnumerable<SelectListItem>)ViewBag.DevelopmentStatus, null, new { @class = "form-control" })
     
        </div>

【问题讨论】:

  • 您有什么问题吗?
  • @YiyiYou ,在第一层我需要显示“ProjectStatus”和“DevelopmentStatus”(这两个是表格)。在第二级,我需要这些表中的值。
  • 您希望 id 为文本或 status 为文本?您想在哪里放置另一个属性值?
  • @Chetan,我的代码只能显示两个单独的下拉列表。但我需要一个多级下拉列表。就像在第一级,我需要显示“ProjectStatus”和“DevelopmentStatus”(这两个是表格)。在第二级,我需要这些表中的值。
  • @YiyiYou,我需要状态为文本。

标签: c# asp.net-core .net-core model-view-controller razor


【解决方案1】:

这是一个演示:

js 和 css:

    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css" rel="stylesheet" />
<!-- Google Fonts -->
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap" rel="stylesheet" />
<!-- MDB -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/mdb-ui-kit/3.6.0/mdb.min.css" rel="stylesheet" />
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mdb-ui-kit/3.6.0/mdb.min.js"></script>

行动:

public IActionResult TestMultilevel()
        {
            ViewBag.ProjectStatus = new List<ProjectStatus> { new ProjectStatus { ProjectStatusID = 1, Status = "s1" }, new ProjectStatus { ProjectStatusID = 2, Status = "s2" }, new ProjectStatus { ProjectStatusID = 3, Status = "s3" } };
            ViewBag.DevelopmentStatus = new List<DevelopmentStatus> { new DevelopmentStatus { DevelopmentStatusID = 11, Status = "s11" }, new DevelopmentStatus { DevelopmentStatusID = 12, Status = "s12" }, new DevelopmentStatus { DevelopmentStatusID = 13, Status = "s13" } };
            return View();
        }

查看:

<div class="dropdown">
    <button class="btn btn-primary dropdown-toggle"
            type="button"
            id="dropdownMenuButton"
            data-mdb-toggle="dropdown"
            aria-expanded="false">
        Dropdown button
    </button>
    <ul class="dropdown-menu" aria-labelledby="dropdownMenuButton">

        <li>
            <a class="dropdown-item" href="#">
                ProjectStatus &raquo;
            </a>
            <ul class="dropdown-menu dropdown-submenu">
                @foreach (var i in ViewBag.ProjectStatus)
                {
                <li>
                    <a class="dropdown-item" href="#">@i.Status</a>
                </li>
                } 
            </ul>
        </li>
        <li>
            <a class="dropdown-item" href="#">
                DevelopmentStatus &raquo;
            </a>
            <ul class="dropdown-menu dropdown-submenu">
                @foreach (var i in ViewBag.DevelopmentStatus)
                {
                    <li>
                        <a class="dropdown-item" href="#">@i.Status</a>
                    </li>
                }
            </ul>
        </li>
    </ul>
</div>


<style>
    .dropdown-menu li {
        position: relative;
    }

    .dropdown-menu .dropdown-submenu {
        display: none;
        position: absolute;
        left: 100%;
        top: -7px;
    }

    .dropdown-menu .dropdown-submenu-left {
        right: 100%;
        left: auto;
    }

    .dropdown-menu > li:hover > .dropdown-submenu {
        display: block;
    }
</style>

结果:

我将href设置为defalu#,你可以改成你想要的值。

【讨论】:

  • 感谢代码。但是当我在我的代码中应用它时,它只是在我点击时显示按钮没有发生任何事情。
  • 你添加了css和js,看看控制台有没有报错?
  • 我已按照您的要求添加了所有内容。我调试了代码,所需的数据也进入了您的代码,但下拉菜单不起作用。
  • 对不起,这是我的默认设置,尝试使用我的答案中更新的css和js。
  • 现在正在加载第一级。不加载第二级。我使用 '@i.Text' 而不是 '@i.Status' 。调试时,值进入其中但未显示为子菜单
猜你喜欢
  • 2021-04-25
  • 1970-01-01
  • 2019-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-30
相关资源
最近更新 更多