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;这是初始化列表的代码,它将在我的视图中填充我的多巴胺列表。在我的模型部分是
[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" })然而,当此页面发布时,我将得到getting的count = 0
为什么会这样?
是否只有从下拉列表本身接受VALUE的方法?
发布于 2014-03-27 10:39:15
这就是它的工作原理。关于POST操作的内容是在表单上张贴了哪些参数。例如,下拉列表将发布一个数字(或字符串),表示选定的值(0、5、20)。所以基本上不是
public IEnumerable<SelectListItem> selectedVatRate { get; set; }你需要
public int selectedVatRate { get; set; }才能正确处理这件事。然后,在post上,selectedVatRate将包含所选值作为整数(例如,在用户选择的5%选项中)。
旁注。默认列表项和第一个选项0%的值相同。这看起来不太对,因为你无法在邮件中区分其中一个和另一个。因此,您可能希望默认值为空:
Text = "Please select...", Value = ""并将selectedVatRate字段转换为int?。然后,在post中,如果选择了默认选项,您将得到null,在0%的情况下将得到0。
https://stackoverflow.com/questions/22684946
复制相似问题