0

我有以下代码来填充DropDownList

var list = new Dictionary<string, decimal>();
list.Add("1.000.000", 1000000m);
list.Add("500.000", 500000m);
list.Add("5.000", 5000m);
viewModel.MyValue = 500000.00m; //of type decimal?
viewModel.MyList = new SelectList(list, "Value", "Key", viewModel.MyValue);

在 HTML 中

@Html.DropDownListFor(model => model.MyValue, Model.MyList, "select value")

一切正常(选定的值被传递给控制器​​并定期保存),唯一不工作的是选定的值。我通过的那个不会在下拉列表中自动选择。我错过了一些明显的东西吗?

4

1 回答 1

0

我解决了这个问题。在 SelectList 中执行 ToString() 时的框架无法将 500000.00 与 500000 匹配(我在我的问题中输入了错误的值,抱歉错字。更新)

使用一个简单的 froeach 你可以看到发生了什么

  viewModel.MyList = new SelectList(list, "Value", "Key", viewModel.MyValue);
  foreach (var item in viewModel.MyList)
  {
    var p = viewModel.MyValue.ToString();
    if (item.Value == p) //here 500000 != 500000.00
    {
      item.Selected = true;
      break;
    }
  }

所以我简单地解决了这个问题

var list = new Dictionary<string, decimal>();
list.Add("1.000.000", 1000000.00m);
list.Add("500.000", 500000.00m);
list.Add("5.000", 5000.00m);

无论如何感谢大家的帮助

于 2012-04-24T16:43:38.700 回答