dropdownlistFor的选定值不可访问
本文关键字:访问 dropdownlistFor | 更新日期: 2023-09-27 17:54:11
var vatRate = new List<SelectListItem>();
vatRate.Add(new SelectListItem { Text = "Please select...", Value = "0", Selected = false });
vatRate.Add(new SelectListItem { Text = "0%", Value = "0", Selected = false });
vatRate.Add(new SelectListItem { Text = "5%", Value = "5", Selected = false });
vatRate.Add(new SelectListItem { Text = "20%", Value = "20", Selected = false });
model.VatRate = vatRate;
这是初始化列表的代码,该列表将填充视图中的dopdownlist。在我的模型部分是
[Required]
[Display(Name = "VAT Rate")]
public IEnumerable<SelectListItem> VatRate { get; set; }
public IEnumerable<SelectListItem> selectedVatRate { get; set; }
在我看来我确实喜欢
@Html.DropDownListFor(m => m.selectedVatRate, Model.VatRate, new { @class = "form-control" })
然而,当这个页面被张贴,我得到选择的dvatrate的count = 0
为什么?
和是否有一种方法只接受VALUE
从下拉列表本身?
它是这样工作的。POST操作中包含的是表单上发布的参数。例如,下拉列表将发布单个数字(或字符串),表示所选值(0,5,20)。所以基本上不是
public IEnumerable<SelectListItem> selectedVatRate { get; set; }
你需要public int selectedVatRate { get; set; }
才能正确处理。然后在post上selectedVatRate
将包含选择的值作为一个整数(例如5在用户选择的5%选项)。
边注。默认列表项和第一个选项0%的值相同。这看起来不太对,因为你将无法从另一个帖子中分辨出一个。因此,您可能希望默认值为空:
Text = "Please select...", Value = ""
,将selectedVatRate
字段变为int?
。然后在post中,如果选择了默认选项,您将获得null
,如果选择0%,则为0。