需要与空值匹配的 SelectListtem 值

问题描述 投票:0回答:1

如果我在页面模型中将可为 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
设置为
""
的空选项。但页面显示时并没有选择这个空选项。

如果用户选择空选项并提交页面,该值将显示为空。有没有办法创建一个空选项,在页面加载时与我的空值匹配?

c# asp.net asp.net-core razor-pages
1个回答
0
投票

我无法找到处理此问题的内置方法。

所以我所做的就是向我的页面模型添加一个属性。此属性获取或设置

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

© www.soinside.com 2019 - 2024. All rights reserved.