2

Html.DropDownListFor に静的値と動的値の両方をコントローラーに設定したいと思います。これを機能させる方法がわかりません。私はいくつかの異なるアプローチを試しましたが、ほとんどの中心は (1) 変数に静的な値を定義する、(2) 動的な値を追加しようとする、(3) すべての値を viewModel 経由で部分ビューに渡すことです。

上記のアプローチのサンプルを次に示します。

//retrieve categories from DB
List<Category> categoryFromDb = new GetCategory().GetCategoryDropdownList(MySession.Current.AccountId).FindAll(c => c.StageId == currentStage);

//local variable with static values and trying to add the dynamic values from above
    var categoryDropDown = new [] {
                                      new {CategoryId = "", CategoryName = "Select Activity"},
                                      new {CategoryId = "0", CategoryName = "Note"},
                                      new {CategoryId = categoryFromDb[0], CategoryName = categoryFromDb[3]}  //THIS IS THE LINE I CAN'T FIGURE OUT
                                  };

    var viewModel = new ActivityTimelineViewModel
    {
        ActivityTimeline = new GetActivity().GetActivityTimeline(MySession.Current.AccountId, MySession.Current.CandidateId),
        CategoryList = categoryDropDown,
        Date = DateTime.Today
    };

私の初心者の能力を考えると、単純なものが欠けていると確信しています。-ティム

4

1 に答える 1

2

共通のタイプを見つける必要があり、それらを組み合わせたコレクションに入れることができます。タイプCategoryの静的な値を作成できますか?

List<Category> categoryFromDb = new GetCategory().GetCategoryDropdownList(MySession.Current.AccountId).FindAll(c => c.StageId == currentStage);
var staticCategories = new[]
{
    new Category{CategoryId = "", CategoryName = "Select Activity"},
    new Category{CategoryId = "0", CategoryName = "Note"}
};

var combinedCategories = staticCategories.Union(categoryFromDb);

または、カテゴリが機能しない場合は、このようにSelectListItemに配置します。

List<SelectListItem> selectItemsFromDB =
new GetCategory().GetCategoryDropdownList(MySession.Current.AccountId).FindAll(
    c => c.StageId == currentStage)
    .Select(c=> new SelectListItem{Value = c.CategoryId, Text = c.CategoryName});
var staticCategories = new[]
{
    new SelectListItem{Value = "", Text = "Select Activity"}
    new SelectListItem{Value = "0", Text = "Note"}
};

var combinedCategories = staticCategories.Union(selectItemsFromDB);
于 2012-10-12T20:04:14.190 に答える