【问题标题】:Create DropDownListFor using strings from a List<string>使用 List<string> 中的字符串创建 DropDownListFor
【发布时间】:2016-01-27 06:24:33
【问题描述】:

我觉得这应该很简单,但在这里没有找到解释在 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();
    }

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

我试图让这个工作,但没有成功。

我的控制器:

[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 很陌生,因为我过去一直使用网络表单。有没有人知道这是否可能或显示它的方法?

谢谢,

【问题讨论】:

  • 您不能将&lt;select&gt; 绑定到List&lt;SelectListItem&gt;。您的模型需要一个简单的属性来绑定(所选选项的值),例如public string SelectedUser { get; set; }
  • 你能举个例子吗?我之前尝试过类似的事情,但没有运气。谢谢
  • Travis Schettler 的编辑现在是正确的,除了我建议 public List&lt;string&gt; UserList { get; set; }public IEnumerable&lt;SelectListItem&gt; UserList { get; set; } 并且您使用 @Html.DropDownListFor(m =&gt; m.User, Model.UserList, "Select User") 并且 [Display] 属性需要在 User 上,而不是 @987654333 @
  • 太棒了,感谢您的帮助
  • 那你应该考虑接受特拉维斯的回答:)

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


【解决方案1】:

我建议直接在视图中使用模型,而不是 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; }
}

您的视图应该绑定到模型:

@model ManageUserAccountsViewModel

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

【讨论】:

  • 感谢您的回复,我试过了,但仍然得到相同的结果,名称列表构建良好,但视图中没有显示任何内容。
  • 更新了更完整的答案。
猜你喜欢
  • 1970-01-01
  • 2011-04-12
  • 2012-04-06
  • 1970-01-01
  • 2016-02-23
  • 1970-01-01
  • 2022-07-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多