【发布时间】:2021-12-02 21:49:41
【问题描述】:
我在 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,您可以提供第二个参数来指示所选值——在我的例子中是硬编码的“B”——但这不起作用。
如果有任何帮助,这是视图中具有SelectList 的sn-p:
<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>
视图显示特定选定住宿的特征。 AccomodationTypeId 是 AccomodationType 类的外键,表示更一般的特征。在视图中,用户可以为当前的Accomodation 选择不同的AccomodationType。当视图在屏幕上呈现时,我希望选择类型“B”,但目前不是。我怎样才能做到这一点?
【问题讨论】:
-
这段代码有很多错误,这就是它不能正常工作的原因。
-
嗯,是的,很多都在这里。我认为在使用 asp-for 时,您需要将
Accomodation.AccomodationTypeId设置为您的选择中应该具有的任何值“B”,但是由于您没有为您的选择设置值,这可能很困难。您可以尝试添加您呈现的 html 的图片(而不是 cshtml 代码)吗? -
@Serge 不我不同意:我只需要更改一行,请参阅我的答案。进一步为我辩护:我提到的微软文章指出,“selectedValue”应该作为第二个参数提供。 “B”作为一个可以选择的值是完全可以的。
-
@Cooz 它会起作用,但这不是最好的方法。很抱歉,但我想知道,既然您是在回答自己的问题,为什么要发布这些问题?
-
@Serge 好吧,我当然不是唯一这样做的人——人们在 Stack Overflow 上回答他们自己的问题。也许是顿悟?终于在搜索了一天之后找到了一篇提供这种见解的文章?对我来说有正当理由。我是一个新手,还在学习——而且,你显然已经超出了这个范围。但是,是最好的方法是什么?我想出的方法有什么问题?
标签: c# asp.net-mvc razor