SelectList忽略selectedvalue

时间:2012-04-24 14:16:49

标签: asp.net-mvc asp.net-mvc-3

我有以下代码来填充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")

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

1 个答案:

答案 0 :(得分: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);

非常感谢大家的帮助