使用viewmodel从数据库中删除DropDownList

时间:2014-03-25 09:03:25

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

我正在构建一个ASP.NET MVC 4 Web应用程序,它允许创建具有角色的用户。有两个角色:管理员和用户。当注册到来时,用户可以通过下拉列表选择新用户的角色。所以这就是我迄今所做的。

我的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.Roles用于我的注册视图?

任何帮助人?我非常感激!

4 个答案:

答案 0 :(得分:3)

查看:

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

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

答案 1 :(得分:0)

你可以这样使用它。

@Html.DropDownList("Roles")

它将为ViewBag创建DropDownList

答案 2 :(得分:0)

您需要将ViewBag项目显式转换为预期类型(IEnumerable<SelectListItem>)ViewBag is a dynamic type

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

答案 3 :(得分:0)

首先看,它显示您正在尝试注册该帐户。为此,按照一步一步的步骤:

注册http get方法添加以下行

ViewBag.Name = new SelectList(context.Roles.ToList(),“Name”,“Name”);

然后HttpPost方法添加以下行:

ViewBag.Name = new SelectList(context.Roles.ToList(),“Name”,“Name”);

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

@ Html.DropDownList(“UserRoles”,(SelectList)ViewBag.Name,“”)

我希望这会奏效。