如果我在页面模型中将可为 null 的
int
设置为 null。
[BindProperty]
public int? ProductId { get; set; }
ProductId = null;
如何使其与我的
SelectListItem
选项之一匹配?
<div class="col-md-3">
<div class="mb-3">
<label asp-for="ProductId" class="control-label"></label>
<select asp-for="ProductId" class="form-select" asp-items="Model.ProductOptions"></select>
<span asp-validation-for="ProductId" class="text-danger"></span>
</div>
</div>
我使用我的产品列表创建了
ProductOptions
,其中包括一个将 Value
设置为 ""
的空选项。但页面显示时并没有选择这个空选项。
如果用户选择空选项并提交页面,该值将显示为空。有没有办法创建一个空选项,在页面加载时与我的空值匹配?
我无法找到处理此问题的内置方法。
所以我所做的就是向我的页面模型添加一个属性。此属性获取或设置
ProductId
的值,但将 null 转换为 0,反之亦然。
public int NonNullProductId
{
get => ProductId ?? 0;
set => ProductId = (value > 0) ? value : null;
}
然后在我的标记中使用这个值。
<div class="col-md-3">
<div class="mb-3">
<label asp-for="ProductId" class="control-label"></label>
<select asp-for="NonNullProductId" class="form-select" asp-items="Model.ProductOptions"></select>
<span asp-validation-for="ProductId" class="text-danger"></span>
</div>
</div>
然后将我的 No Product 选项的值设置为
0
。