如何在 cshtml 视图中正确设置所选项目?

How to properly set a selected item in a cshtml view?

我在我的 ViewModel 中定义了这个 SelectList

public SelectList AccomodationTypesTypes()
{
    return new SelectList(AccomodationTypes.Select(a => a.Type), "B"); 
}

AccomodationTypes.Select(a => a.Type) 是一个 IENumerable<string>,目前由“A”、“B”和“C”组成。 根据 https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.rendering.selectlist.-ctor,您可以提供第二个参数来指示 selected 值——在我的例子中是硬编码的“B”——但这不起作用。

如果有任何帮助,这是视图中具有 SelectList:

的片段
<div class="form-group row">
    <label asp-for="Accomodation.AccomodationTypeId" class="col-sm-2 col-form-label">Type</label>
    <div class="col-sm-10"><select asp-for="Accomodation.AccomodationTypeId" asp-items="Model.AccomodationTypesTypes()"></select></div>
</div>

该视图显示特定 selected 住宿的特征。 AccomodationTypeId 是AccomodationType class 的外键,表示更一般的特征。在视图中,用户可以 select 当前住宿的不同住宿类型。当视图在屏幕上呈现时,我希望类型“B”被 selected,但目前不是。我怎样才能做到这一点?

我通过使用不同的 SelectList 重载解决了这个问题:

public SelectList AccomodationTypesTypes()
{
     return new SelectList(AccomodationTypes, "Id", "Type");
}

"Id"与视图中的asp-for(Accomodation.AccomodationTypeId)绑定,对应的"Type"显示在选择列表中。行不行。

我走错了方向,因为 return new SelectList(AccomodationTypes.Select(a => a.Type)) 已经给了我想要的下拉列表,而且根据我链接的 Microsoft 文章,我只需要提供第二个参数来建立选定值(" Id”,而不是“B”)。