我有以下Action方法,其中有一个带字符串列表的viewBag:-

public ActionResult Login(string returnUrl)
        {
            List<string> domains = new List<string>();
    domains.Add("DomainA");

            ViewBag.ReturnUrl = returnUrl;
            ViewBag.Domains = domains;
            return View();
        }

在 View 上,我试图构建一个下拉列表,以显示viewBag字符串,如下所示:
@Html.DropDownList("domains",(SelectList)ViewBag.domains )

但是我遇到了以下错误:-



因此,有人能容忍为什么我不能填充of的下拉列表吗?
谢谢

最佳答案

因为DropDownList不接受字符串列表。它接受IEnumerable<SelectListItem>。将您的字符串列表转换为该列表是您的责任。不过,这很容易:

domains.Select(m => new SelectListItem { Text = m, Value = m })

然后,您可以将其提供给DropDownList:
@Html.DropDownList("domains", ((List<string>)ViewBag.domains).Select(m => new SelectListItem { Text = m, Value = m }))

10-01 04:39