使用视图模型从数据库中的下拉列表

本文关键字:下拉列表 数据库 视图 模型 | 更新日期: 2023-09-27 17:53:29

我正在构建一个ASP。NET MVC 4 web应用程序,允许创建具有角色的用户。有两个角色:管理员和用户。注册完成后,用户可以通过下拉列表选择新用户的角色。这是我到目前为止所做的。

My UserViewModel:

public class UserModel
{
    [Required]
    [StringLength(50)]
    [Display(Name="Username : ")]
    public string Username { get; set; }
    [Required]
    [DataType(DataType.Password)]
    [StringLength(50, MinimumLength=6)]
    [Display(Name = "Password : ")]
    public string Password { get; set; }

    public Role Role { get; set; }
}

我的HttpGet方法:

    [HttpGet]
    public ActionResult Registration()
    {
        context = new MainDatabaseEntities();
        ViewBag.Roles = new SelectList(context.Roles, "RoleId", "RoleDesc");
        return View();
    }
从这里开始,我不知道我该做什么。我的ViewModel足够好做我想要的(创建和更新用户)吗?我应该如何使用我的ViewBag。注册视图中的角色?

有什么帮助吗?非常感谢!

使用视图模型从数据库中的下拉列表

视图:

@Html.DropDownListFor(m => m.RoleId, (SelectList)ViewBag.Roles )

您应该在您的模型中有一个RoleId来保存选中的项目

你可以这样使用。

@Html.DropDownList("Roles")

它将为ViewBag创建下拉列表

您需要显式地将ViewBag项转换为期望的类型(IEnumerable<SelectListItem>),如ViewBag is a dynamic type

@Html.DropDownListFor(m => m.RoleId,((IEnumerable<SelectListItem>)ViewBag.Roles))

首先,它显示您正在尝试注册帐户。为此,请遵循一步一步的步骤:

注册http get方法添加以下行

ViewBag。Name = new SelectList(context.Roles.ToList(), "Name", "Name");

然后HttpPost方法添加以下行:

ViewBag。Name = new SelectList(context.Roles.ToList(), "Name", "Name");

在注册视图中添加以下行:

@Html。DropDownList("UserRoles ViewBag (SelectList)。名称," ")