0

5つのドロップダウンがあり、基本的に「選択」、「はい」、「いいえ」が表示されます。最初は「選択」に設定されています。ユーザーが何かを選択すると、データをCookieに(Jqueryを使用して)保存し、最終的にはこれをViewModelに渡して、コントローラーで使用できるようにします。

ユーザーがページを更新したときに、これらのドロップダウンリストにViewModelにある値を再度入力する必要があります。

現在、私は次のコードを持っています:-

私が持っているビューの中に

<%: Html.DropDownList("FirstQuestYesNo", ViewData["FirstQuestYesNoData"] as SelectList, new { @class = "normalDropdowns" })%>

そして私のコントローラーには次のものがあります:-

            var ddlYesNoData = new SelectList(new[]
                                      {
                                          new {ID="",Name=@Resources.GeneralTerms.GeneralTerms_Select},
                                          new {ID="Yes",Name=@Resources.GeneralTerms.GeneralTerms_Yes},
                                          new{ID="No",Name=@Resources.GeneralTerms.GeneralTerms_No},
                                      },
        "ID", "Name", 1);


        //Refresh the YesNo dropdown with the correct vals
        Dictionary<string, string> YesNoData = new Dictionary<string, string>();
        YesNoData.Add("FirstQuestYesNoData", viewModel.FirstQuestYesNoValue);
        YesNoData.Add("SecondQuestYesNoData", viewModel.SecondQuestYesNoValue);
        YesNoData.Add("ThirdQuestYesNoData", viewModel.ThirdQuestYesNoValue);
        YesNoData.Add("FourthQuestYesNoData", viewModel.FourthQuestYesNoValue);
        YesNoData.Add("FifthQuestYesNoData", viewModel.FifthQuestYesNoValue);

        foreach (var item in YesNoData)
        {
            ViewData[item.Key] = ddlYesNoData;
            if (item.Value != null)
            {
                var selected = ddlYesNoData.Where(x => x.Value == item.Value).First();
                selected.Selected = true;
            }
        }

つまり、基本的に私が行っているのは、viewModelから各ドロップダウンの値を取得し、その値をビュー内に設定しようとすることです。私が行っていることの結果として、viewModel内の値ではなく、すべてのDropdownListsオプションが「選択」として表示されます。

問題は、特定のDropDownListを「ターゲットにする」方法がわからないことです。コードを使用して、コントローラーからDropDown(この場合は「FirstQuestYesNo」)をターゲットにするにはどうすればよいですか?

あなたの助けと時間をありがとう。

4

1 に答える 1

0

コントローラアクションでは、FirstQuestYesNoプロパティを対応する値に設定するだけです。例えば:

ViewData["FirstQuestYesNo"] = "Yes"; // this value might come from a cookie

これにより、オプションが自動的に事前選択されますvalue="Yes"。明らかに、この値はCookieから取得されます。foreachループは必要ありません。

于 2012-10-15T08:55:14.193 に答える