【发布时间】:2021-03-18 05:20:36
【问题描述】:
我在 Razor 组件中遇到了 InputSelect 元素的奇怪行为。 在我的输入表单上,我有几个与模型(合作伙伴)绑定的字段。我以下拉选择的形式放置了其中一些字段。因为绑定字段的 (PartnerCategory) 值是 id(整数),所以我从数据库中获取一个查找表,其名称对应于选定的 id。
在一个页面上,我可以在下拉列表中看到所有名称。但是当我尝试将记录从表单插入到数据库时,它会引发 SQL 异常,因为 InputSelect 将列表中的第一个值视为 NULL。只是要清楚 - 下拉列表中没有空白值,并且显示了所有名称。它只是将其值设为 NULL。以下是因为数据类型是整数,它将 NULL 转换为零。而且因为我的表中没有 id 为零,所以 Insert 命令失败。
下面是我的简化代码
<EditForm Model="@partner">
<InputSelect @bind-Value="partner.PartnerCategoryId">
@if (categoryList != null)
{
@foreach (var item in categoryList.OrderBy(x => x.PartnerCategoryId))
{
<option value="@item.PartnerCategoryId">@item.Name</option>
}
}
</InputSelect>
</EditForm>
@code {
Partner partner = new Partner();
private IEnumerable<PartnerCategory> categoryList;
protected override async Task OnInitializedAsync()
{
categoryList = await CategoryService.GetAllAsync();
}
}
我该如何处理?它会在从数据库中获取数据之前将值绑定到模型吗?
【问题讨论】:
标签: asp.net-core blazor