0
我有一個RegisterViewModel,它接受來自用戶的輸入並將其存儲在數據庫中。我已經使用IEnumerable在dropdownlist中存儲角色。視圖可以正常工作,但我無法獲取dropdownlist值並將其存儲到用戶表中。我應該做些什麼來獲得下拉列表值?無法在mvc中插入dropdownlist值到數據庫
public class RegisterViewModel
{
[Required]
[DisplayName("User Name")]
public string UserName { get; set; }
[Required]
[Remote("EmailAlreadyExists", "Validation", ErrorMessage = "User with this mail exists")]
[DisplayName("Email")]
public string Email { get; set; }
[Required]
[DisplayName("Password")]
public string Password { get; set; }
[Required]
[DataType(DataType.Password)]
[DisplayName("Confirm Password")]
public string ConfirmPassword { get; set; }
[Required]
public IEnumerable<SelectListItem> Roles { get; set; }
}
我的榜樣
public class Role
{
public int Id { get; set; }
public string Name { get; set; }
}
查看的角色是,
<div class="form-group">
@Html.LabelFor(model => model.Roles, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.Roles, Model.Roles, "Select Roles" , new {id = "Roles" })
@Html.ValidationMessageFor(model => model.Roles, "", new { @class = "text-danger" })
</div>
</div>
最後我控制器
public ActionResult Index()
{
RegisterViewModel uvm = new RegisterViewModel();
uvm.Roles = from r in roles
select new System.Web.Mvc.SelectListItem
{
Text = r.Name,
Value = r.Id.ToString()
};
return View(uvm);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Index(RegisterViewModel register)
{
if (ModelState.IsValid)
{
string code = Guid.NewGuid().ToString();
userRepo.Insert(new Models.User()
{
UserName = register.UserName,
Email = register.Email,
Password = register.Password,
/* Role = register.Roles */
CreatedDate = DateTime.Now,
AuthCode = code,
Status = false
});
SendMail(register.UserName, register.Email, code);
return RedirectToAction("Thankyou");
}
return View(register);
}
無法綁定'
嘗試Role = register.Roles.Value – Ravikumar
@Ravikumar,由於'Roles'爲'null',這隻會拋出'NullReferenceException' –