【问题标题】:MVC4 Set default SelectListItem in DropDownList when the list contains a SelecListItem with value 0当列表包含值为 0 的 SelectListItem 时,MVC4 在 DropDownList 中设置默认 SelectListItem
【发布时间】:2015-09-25 22:51:42
【问题描述】:

我正在尝试将视图中的默认 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)

现在发生的情况是,当我的视图加载时,---Select--- 选项位于列表顶部,值为 null,正如预期的那样,但是默认选择的列表项是“Exempt”,从我所拥有的收集这是因为 MVC 将默认下拉列表项设置为值为 0 的任何选项。

对此我尝试了许多不同的解决方法,例如添加

new SelectListItem{Text = "Test", Value = null, Selected = true }

但是在页面加载时仍然没有选择它,而且我尝试过的其他方法都没有奏效。

我无法避免选择值为 0 的 Exempt 选项,因为我的申请需要此信息。

我已经搜索并搜索了这个问题的答案,但没有发现任何帮助,如果有人能指出我正确的方向以及如何解决这个问题,我将不胜感激。

【问题讨论】:

  • 你试过让你的m.SelectedId可以为空吗?

标签: c# asp.net asp.net-mvc-4 html.dropdownlistfor dropdownlistfor


【解决方案1】:

使属性可以为空:

public int? Vat { get; set;}

原因是 int 的默认值为 0,因此当您的模型在发布期间被绑定时,您的属性的值将设置为 0,即使选择的值为 null 为 int不可为空,但 int? 是。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    相关资源
    最近更新 更多