我有一个页面,我想要一个包含角色选择的下拉列表(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)
任何想法?
答案 0 :(得分:0)
当我删除
时@Html.HiddenFor(m => m.RoleId)
它开始工作