0

我在这个模型中有一个名为 QA 的模型我有一个外键 SectionId。创建 QA 时,SectionId 获取名为“未分类”的部分的 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< SelectListItem > 的服务,如图所示

 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",但它仍然显示“未分类”。我怎样才能让它总是显示选项请选择一个部分?

4

1 回答 1

0

您需要添加一个空值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;
}
于 2021-10-25T15:33:03.047 回答