如何在 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”)。
我在我的 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”)。