Asp.net MVC Nhibernate未在ListBox中收集所选项目

本文关键字:选项 项目 ListBox net MVC Nhibernate 未在 Asp | 更新日期: 2023-09-27 18:27:53

当用户选择角色中的项目并提交时,模型不会填充所选项目。如果我应该用另一种方式来做这件事,我能得到一些见解吗。

型号

    public virtual string UserName { get; set; }
    public virtual string Password { get; set; }
    public virtual DateTime LastLogin { get; set; }
    public virtual int FailedAttempts { get; set; }
    public virtual bool IsLocked { get; set; }
    public virtual IList<Role> Roles { get; set; }

控制器

    [HttpPost]
    public ActionResult Edit(Login user)
    {
        var u = repoLogin.Update(user);
        repoLogin.Save(u);
        return View(u);
    }

查看

        <label>Roles</label>
        @Html.ListBoxFor(m => m.Roles, new SelectList(Enum.GetValues(typeof(LiveReport.Domain.Enum.UserRoles))))

Asp.net MVC Nhibernate未在ListBox中收集所选项目

Role是一个复杂的对象。ListBoxFor发送与所选值相对应的简单字符串列表。

因此,您可以有一个属性来保存选定的值:

public virtual IList<string> SelectedRoles { get; set; }

然后将选择列表绑定到它:

@Html.ListBoxFor(
    m => m.SelectedRoles, 
    new SelectList(
        Enum.GetValues(typeof(LiveReport.Domain.Enum.UserRoles))
    )
)

此外,您似乎正在使用一些枚举来填充选择列表项。因此,您可以使用与属性相同的枚举将列表绑定到:

public virtual IList<UserRoles> SelectedRoles { get; set; }