- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个像这样的扩展用户类:
public class User : IdentityUser
{
public string Nombre { get; set; }
public string Apellidos { get; set; }
public int DepartamentoID { get; set; }
public Departamento Departamento { get; set; }
}
在我的编辑 View 中,我有这个字段定义:
<div class="form-group">
@Html.LabelFor(model => model.Roles.FirstOrDefault().RoleId, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(m => m.Roles.ElementAtOrDefault(0).RoleId, (SelectList)ViewBag.RoleList, "Seleccionar un rol", new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.Roles.FirstOrDefault().RoleId)
</div>
</div>
当我发送表单时,角色集合是空的。
为什么 Binder 没有将角色添加到 Roles 集合中?
问候和感谢。
我尝试添加更多信息以回应 Rajesh 的评论。
在 Get 操作中,模型包含角色的信息,并且 View 正确显示了它。下拉列表显示可用的角色,并且用户的角色显示为已选中。当我在 View 中选择另一个不同的角色并发送表单时,在 Post 操作中,模型的 Roles 集合不再包含信息。
不知道如何调试Binder的工作
最佳答案
Why the Binder does not add the role to the Roles collection?
它发生是因为 @Html.DropDownListFor
和默认模型 Binder 不够智能。你的@Html.DropDownListFor
产生这样的东西:
<select class="form-control" id="RoleId" name="RoleId">
<option value="1">Role_1</option>
<option value="2">Role_2</option>
</select>
自 name=RoleId
模型绑定(bind)器将尝试将其绑定(bind)到 RoleId
你的模型的属性,它对 Roles
一无所知属性(property),而且Roles
prop 是可枚举的。
要使其正常工作,您的模型必须具有 RoleId
属性(property),或者您可以使用 Html.ListBoxFor
如果要选择多个角色,请扩展:
@Html.ListBoxFor(m => m.SelectedRoles, (SelectList)ViewBag.RoleList, new { @class = "form-control" })
那么你的模型必须有public List<string> SelectedRoles { get; set; }
属性(property)。
另一种选择是使用 IModelBinder
创建自定义模型 Binder 界面。此选项为您提供了将请求数据映射到模型的无限能力。
关于c# - asp.net mvc Binder 不更新编辑 View 中的 RoleId 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50512380/
我注意到当使用 UserManager 类时,通过 AddToRole 方法,您只能按名称将用户添加到角色,不能按角色 ID。有没有办法做到这一点?按照我的系统构建方式,多个角色可能具有相同的名称。我
有没有办法在不直接从数据库获取RoleId的情况下获取RoleId?,我知道我们可以通过以下方式获取角色名称: string[] allRoles = System.Web.Security.Role
我有一个像这样的扩展用户类: public class User : IdentityUser { public string Nombre { get; set; } public stri
如何获取登录到应用程序的用户的用户 ID 和角色 ID? User.Identity不包含这些细节? 谢谢, 岛 最佳答案 就是这样: string userId = Membership.GetUs
我是一名优秀的程序员,十分优秀!