【问题标题】:ASP.NET Core Filtered Dropdown List does not display previously entered valueASP.NET Core 过滤下拉列表不显示以前输入的值
【发布时间】:2021-08-10 16:22:39
【问题描述】:

我有一个 ASP.NET Core Web 应用程序,在编辑页面上有一个下拉列表。它是一个 SQL 后端。我的字段之一是从“用户”表填充的“项目经理”。

因此人们不会选择退休或非活跃用户,SQL 中有一个布尔字段称为“活跃”,对于活跃用户为真,对于旧用户为假。

我根据此属性过滤了我的选择列表,它仅正确显示当前用户。

但是,如果现有记录在“项目经理”字段中有非活动用户,则在您打开编辑页面时它会显示为空。

在选择列表中不存在值时,有没有方法可以在编辑页面上保留现有值?

或者,还有其他方法可以做到这一点吗?

【问题讨论】:

    标签: asp.net-core selectlist


    【解决方案1】:

    如果没有记录,您可以将“默认”数据与您的列表合并。这样,如果您的列表返回空记录,它将与默认连接,并且将有一个默认选项。

    如果下拉列表返回 null 或空,您可以为下拉列表设置一些硬编码值。在这种情况下,如果在列表中找不到记录,您的硬编码数据将填充到 UI 上。

    【讨论】:

      【解决方案2】:

      我使用以下方法让它工作:

      @{
        if (Model.Projects.ProjectManager.HasValue &&
            Model.Projects.ProjectManagerNavigation.Active == false)
               {
               int pm = (int)Model.Projects.ProjectManager;
      <option value="@pm">@Model.Projects.ProjectManagerNavigation.FullName</option>
               }
               else
               {<option disabled selected>--- SELECT ---</option>}
        }
      

      在该字段的选择标记内。

      它检查“项目经理”字段是否有值,以及该用户是否处于非活动状态并且只是为现有用户添加一个选择列表选项,即使他们不再在过滤的选择列表中。

      感谢萨钦的回答,我只需要弄清楚如何实现它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-08-21
        • 2022-06-10
        • 2017-08-12
        • 2020-10-18
        • 2011-12-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多