mvc4 dropdownlistfor未在模型中填充的值

时间:2014-02-02 23:16:40

标签: asp.net-mvc-4

我有一个页面,我想要一个包含角色选择的下拉列表(ex R1,R2,R3):用户将在下拉列表中选择他们想要的角色。

我有一个带有RoleId属性的视图模型,该属性应该包含用户所选角色的id。我将RoleId设置为默认值1。同样在视图模型上,我创建了一个包含角色选择列表的SelectList。

视图渲染正常 - 角色选择都在下拉列表中,我通过设置RoleId指定的角色已经被选中。

然后我从下拉列表中选择一个不同的角色并发布表单。

当我在模型上检查RoleId的值时,它仍然设置为原始选项,而不是更改的值。因此,例如在下面的代码中,我设置RoleId = 1,然后通过从视图中的下拉列表中选择并将其更改为2。在post操作中返回的模型具有RoleId = 1

    public class CreateUserViewModel
        {   
            [Required]
            [Display(Name = "User Name")]
            public string UserName { get; set; }

            [Required]
            public int RoleId { get; set; }
    }

public ActionResult Create()
            {
   var model = new CreateUserViewModel()
   model.RoleId=1;
   return View(model);
}

     [HttpPost]
            public ActionResult Create(CreateUserViewModel model)
            {
// RoleId=1 here, but should be 2
}

在视图中我有以下

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

我甚至尝试在一些答案中添加一条额外的行:

@Html.HiddenFor(m => m.RoleId)

任何想法?

1 个答案:

答案 0 :(得分:0)

当我删除

@Html.HiddenFor(m => m.RoleId)

它开始工作

相关问题