1

ビューに 2 つの選択リストがあります。ページ全体を投稿せずに、最初の選択リストの選択された項目の値に従って、2 番目の選択リストの項目を設定する必要があります。これを実現する最善の方法は何ですか?

ビュー内の選択リストは次のとおりです。

                <tr>
                <td>
                    <div class="editor-label">
                        @Html.LabelFor(model => model.PersonnelAreaID)
                    </div>
                </td>
                <td>
                    <div class="editor-field">
                        @Html.DropDownListFor(model => model.PersonnelAreaID, TLMS_DropDownLists.PersonnelAreas)
                    </div>
                </td>
            </tr>
            <tr>
                <td>
                    <div class="editor-label">
                        @Html.LabelFor(model => model.SupervisorID)
                    </div>
                </td>
                <td>
                    <div class="editor-field">
                        @Html.DropDownListFor(model => model.PersonnelAreaID, TLMS_DropDownLists.ApprovingAuthorities)
                    </div>
                </td>
            </tr>

現在、それらに入力している方法は次のとおりです。

        public static List<SelectListItem> PersonnelAreas
    {
        get
        {
            List<SelectListItem> personnelAreas = new List<SelectListItem>();
            personnelAreas.Add(new SelectListItem { Value = "", Text = "" });
            foreach (PersonnelArea pa in PersonnelArea.GetAllPersonnelAreas())
            {
                personnelAreas.Add(new SelectListItem { Value = pa.AreaID.ToString(), Text = pa.AreaTitle });
            }
            return personnelAreas;
        }
        private set { }
    }

        public static List<SelectListItem> ApprovingAuthorities
    {
        get
        {
            List<SelectListItem> returned = new List<SelectListItem>();
            returned.Add(new SelectListItem { Text = "", Value = "" });
            foreach (Employee item in Employee.GetAllEmployees().Where(e => e.UserRoleID == 2 || e.UserRoleID == 5))
            {
                returned.Add(new SelectListItem { Text = string.Format("{0} {1}", item.FirstName, item.LastName), Value = item.ID.ToString() });
            }
            return returned;
        }
        private set { }
    }

PersonnelArea に該当するものだけを表示するには、ApprovingAuthorities 選択リストが必要です。

4

2 に答える 2

2

「最良の」方法はおそらく意見の問題ですが、AJAX を使用して 2 番目のドロップダウンに入力することをお勧めします。

最初のドロップダウンには静的データを入力できますが、2 番目のドロップダウンには、クライアント側の JavaScript コードを生成して 2 番目のデータを入力するか、JSON を返すコントローラー メソッドへの AJAX 呼び出しを実行してから 2 番目のデータを入力することで入力できます。そのデータのドロップダウン。

これについての素晴らしい記事があります: http://www.sidecreative.com/Blog/Entry/Cascading-dropdown-lists-with-MVC4-and-jQueryの「MVC 4 と jQuery を使用したドロップダウン リストのカスケード」。

幸運を!

于 2013-09-05T14:48:23.313 に答える
0

SignalR を使用して、2 番目のコンボボックスを設定することもできます。ここで良いチュートリアルに従うことができます

于 2013-09-05T15:01:09.433 に答える