c# - 使用列表中的字符串创建 DropDownList<string>

标签 c# asp.net asp.net-mvc html.dropdownlistfor

我觉得这应该很简单,但没有在这里找到解释在 MVC 中使用 dropdownlistfor 的指南。

我在用户类的方法中有一个简单的名称列表:

public List<string> getUsersFullNames()
    {
        return (from da in db.Dat_Account
                join ra in db.Ref_Account on da.AccountID equals ra.AccountID
                select ra.FirstName + " " + ra.Surname).ToList();
    }

我想在下拉列表中显示每个名称,以便可以选择名称。

我尝试让它工作,但没有成功。

我的 Controller :

[Authorize]
    public ActionResult ManageUserAccounts()
    {
            ViewBag.UserList = oUsers.getUsersFullNames();
            return View();
    }

我的模型:

public class ManageUserAccountsViewModel
{
    [Display(Name = "Users")]
    public List<SelectListItem> UserList { get; set; }
}

我的观点:

Html.DropDownListFor(model => model.UserList, new SelectList(oUsers.getUsersFullNames(), "Select User"));

我对 ASP.NET MVC 很陌生,因为我过去一直使用 WebForms。有谁知道这是否可能或显示它的方法?

谢谢

最佳答案

我建议直接在 View 中使用模型,而不是 ViewBag。更新您的操作以包含模型引用:

public ActionResult ManageUserAccounts()
{
    var model = new ManageUserAccountsViewModel();
    model.UserList = oUsers.getUsersFullNames();
    return View(model);
}

您的模型应更新以包含选定的用户属性:

public class ManageUserAccountsViewModel
{
    public string User { get; set; }

    [Display(Name = "Users")]
    public List<string> UserList { get; set; }
}

您的 View 应该绑定(bind)到模型:

@model ManageUserAccountsViewModel

@Html.DropDownListFor(m => m.User, new SelectList(Model.UserList), "Select User")

关于c# - 使用列表中的字符串创建 DropDownList<string>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35022837/

相关文章:

c# - 使用 PuppeteerSharp 访问 windows.localStorage

c# - 请求访问 token 时通过 OAuth 2、 "invalid_request"连接到 Google

c# - Web Api oData v4 $ref 404 或服务器错误

c# - 如何动态更改mvc3中标签的可见性?

asp.net-mvc - .NET MVC - 列表和详细 View

asp.net-mvc - 需要有关 MVC 电子商务开发的建议

c# - 如何通过调用构造函数提供只读属性的值?

javascript - 在同一端口上运行单独的 ASP.NET 项目

asp.net - HTML 标记的语法突出显示在 Visual Studio 2008 中消失

asp.net-mvc - ASP.NET MVC 中的声明性 HTML 助手和 HTML 助手有什么区别?