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 に答える