为什么我的下拉列表没有约束力?使用 DropDownListFor Razor 辅助函数。
查看:
@Html.DropDownListFor(m => m.ModelObject.VatRate, Model.VatRatesList)
View 模型:
public SelectList VatRatesList
{
get
{
return new SelectList(
new Dictionary<decimal, string>
{
{ 0m, string.Empty },
{ 1.2m, "20%" },
{ 1m, "0%" }
}, "Key", "Value",
ModelObject.VatRate ?? 0m);
}
}
谢谢。
最佳答案
更新
经过进一步调查,我发现这与我尝试绑定(bind)的模型属性有关。它是一个可为空的小数。当我将其更改为小数时,会从列表中选择正确的值。
这里是事情开始变得奇怪的地方。如果我为字典键使用 4 个小数位,它适用于可为 null 的十进制模型属性。换句话说,这有效:
public SelectList VatRatesList
{
get
{
return new SelectList(
new Dictionary<decimal, string>
{
{ 0.0000m, string.Empty },
{ 1.2000m, "20%"},
{ 1.0000m, "0%"}
}, "Key", "Value");
}
}
我不知道为什么。也许 html 助手在内部使用 ToString() 。我认为 ToString() 会给出小数的 4dp 字符串表示。我将不得不查看 MVC 源代码以找出答案。
关于c# - 如果字典键为可为空的十进制,则 Mvc SelectList 不绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10752904/