MVC4当列表中包含值为0的seleclisttiitem时,在下拉列表中设置默认的seleclisttiitem

本文关键字:seleclisttiitem 下拉列表 设置 默认 包含值 MVC4 列表 | 更新日期: 2023-09-27 18:14:36

我试图将我的视图中的默认SelectListItem设置为——Select——,值为null。这应该很简单。

我知道这可以在视图中使用这个重载示例来完成。

@Html.DropDownListFor(m=> m.SelectedId, M.List, "---Select---", null)

然而,这就是我有问题的地方,这个列表我试图设置默认值上有一个值为0的SelectListItem。

 @Html.DropDownListFor(model => Model.Vat, new List<SelectListItem>
                        {
                        new SelectListItem{Text = "Normal 20%", Value = "20"},
                        new SelectListItem{Text = "Reduced 5%",Value = "5"},
                        new SelectListItem{Text = "Exempt", Value = "0",} //This is the cause of the problem
                        }, "---Select---", null)

现在发生的事情是,当我的视图加载时,——选择——选项是在列表的顶部,值为null,如预期的那样,然而默认选择的列表项是"豁免",从我收集到的这是因为MVC将默认下拉列表项设置为任何值为0的选项。

我已经尝试了许多不同的解决方法,例如添加
new SelectListItem{Text = "Test", Value = null, Selected = true }

但是当页面加载时仍然没有选择,并且我尝试的其他方法都不起作用。

我不能避免使用值为0的选项Exempt,因为我的应用程序需要此信息。

我已经搜索和搜索了这个问题的答案,但没有发现任何有用的,如果有人能指出我在正确的方向与如何接近这一点,我将非常感激。

MVC4当列表中包含值为0的seleclisttiitem时,在下拉列表中设置默认的seleclisttiitem

设置属性为空:

public int? Vat { get; set;}

这样做的原因是int有默认值0,所以当你的模型在一个帖子期间绑定,你的属性的值将被设置为0,即使选择的值是空的,因为int是不可空的,但int?是。