3

ユーザーがロールを選択して作成するアカウントを選択できるように、ドロップダウン リストを作成しました。私が直面している問題は、ドロップダウンに管理者の役割が表示されることです。リストから管理者ロールを非表示または削除するにはどうすればよいですか?

ドロップダウン リストはビューバッグで生成されます。

   public ActionResult Register()
        {
            List<SelectListItem> list = new List<SelectListItem>();
            SelectListItem item;
            foreach (String role in Roles.GetAllRoles())
            {
                item = new SelectListItem { Text = role, Value = role };
                list.Add(item);
            }

            ViewBag.roleList = (IEnumerable<SelectListItem>)list;
            return View();
        } 

アドバイス - 歓迎

4

1 に答える 1

3

選択リストから管理者ロールを削除するのではなく、選択リストを作成しているアレイから管理者ロールを削除する必要があると思います。

だから代わりに

foreach (String role in Roles.GetAllRoles())


foreach (String role in Roles.GetAllRoles().Where(role => role != "admin"))

必要に応じて、この限定されたロール呼び出しを独自のメソッドにさらに抽象化できます。

質問の一部ではありませんが、そのコードをすべて単純な linq ステートメントに置き換えることができます。

ViewBag.roleList = Roles.GetAllRoles().Where(role => role != "admin").
    Select(role => new SelectListItem { Text = role, Value = role}).ToList();

また、質問の一部ではありませんが、SelectList をビューモデルの一部にすることを強くお勧めします。

于 2012-04-23T00:53:08.483 に答える