我正在尝试解决 ASP.NET MVC 中缺少 CheckBoxList 的问题。我已经到了可以很好地呈现枚举值列表的地步,但我仍然坚持如何根据我的模型设置选中的属性——在这种情况下,它是一个具有角色实体 IList 的用户实体.角色 ID 对应于枚举值。
此示例使用 Spark View 引擎语法,但它在功能上与标准 ASP.NET MVC View 引擎相同(“$(”与“<%=”或“<%”相同)
<for each="var r in Enum.GetValues(typeof(UserRole))">
<label><input type="checkbox" name="Roles" value="${(int)r}" checked="[How-The-Heck-To-I-Get-This?]" />${r}</label>
</for>
最佳答案
如果您的角色是这样定义的,那么您可以将多个角色与用户相关联
[Flags]
public enum UserRole
{
DataReader = 1,
ProjectManager = 2,
Admin = 4,
}
通过添加一个简单的扩展方法,您可以检查您的角色是否包含目标角色
public static class RoleExtension
{
public static bool HasRole(this UserRole targetVal, UserRole checkVal)
{
return ((targetVal & checkVal) == checkVal);
}
}
使用你 View 中的扩展方法来更新复选框,不确定下面的方法是否适合你的 View 引擎。
<for each="var r in Enum.GetValues(typeof(UserRole))">
<label>
<input
type="checkbox"
name="Roles"
value="${(int)r}"
checked="${Model.Role.HasRole(r) ? "checked" : string.Empty}" />
</label>
关于c# - 在 ASP.NET MVC 中设置 CheckBox 的 Checked 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1468521/