【问题标题】:Setting SelectedListItem property Selected to false isn't working将 SelectedListItem 属性 Selected 设置为 false 不起作用
【发布时间】:2021-12-11 00:35:50
【问题描述】:

我在这个模型中有一个名为 QA 的模型我有一个外键 SectionId。创建 QA 时,SectionId 会获取名为“未分类”的 Section 的 Id,如图所示

         public async Task<IActionResult> Create(CreateQAViewModel qA)
    {
 var qa = mapper.Map<QA>(qA);
 qa.SectionId = UnclassifiedIds.UnClassifiedSectionId;
 qa.CaseNumber = Randomizer.GetAUniqueString(qaS.Select(q => q.CaseNumber).ToList(), 
 (int)Num(qa), true);
    // code

在 QA 注册后,管理员会回答问题并将 QA 移至右侧部分,因此我创建了一个服务,该服务提供 IEnumerable,如图所示

 public async Task<IEnumerable<SelectListItem>> GetSectionsIdAsync()
    {
        var SectionsLists = await uoW.SectionsRepository.GetAllSectionsAsync();

        return SectionsLists.Select(vl => new SelectListItem
        {
            Text = vl.Title.ToString(),
            Value = vl.Id.ToString(),
        Selected = false

        }).Distinct();
    }

我将此服务注入到视图中,如下所示:

@inject ISelectServices service

    <div class="form-control">
        <select asp-for="SectionId" asp-items="@await service.GetSectionsIdAsync()" class="form-select">

            <option selected="selected" value="">
                please choose a section
            </option>
        </select>
        <span asp-validation-for="SectionId" class="text-danger"></span>
    </div>

我想向用户显示的选项是“请选择一个部分”,但它一直显示“未分类”,因为它是项目的当前值 (qa)。 如上所示,我已经在 SelectListItems 中将属性 selected 设置为 false,并在视图中使用了属性 selected="selected",但它仍然显示“未分类”。 我怎样才能让它总是显示选项请选择一个部分?

【问题讨论】:

    标签: c# asp.net-mvc html-select selectlistitem select-options


    【解决方案1】:

    你需要给SectionsLists添加一个空值

    public async Task<IEnumerable<SelectListItem>> GetSectionsIdAsync()
    {
        var SectionsLists = await uoW.SectionsRepository.GetAllSectionsAsync();
    
        var retval = SectionsLists.Select(vl => new SelectListItem
        {
            Text = vl.Title.ToString(),
            Value = vl.Id.ToString(),
            Selected = false
        }).Distinct();
    
        retval.Insert(0, new SelectListItem
        {
            Text = "please choose a section",
            Value = string.Empty
        }
    
        return retval;
    }
    

    【讨论】:

    • 我也试过了,还是不行。该选项正在添加到下拉列表中,但所选项目始终为“未分类”,其 id 是当前项目的 SectionId 的当前值。
    猜你喜欢
    • 2013-04-22
    • 2011-10-28
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 2016-07-10
    • 2020-06-01
    • 1970-01-01
    • 2016-11-11
    相关资源
    最近更新 更多