c# - 在 ASP.NET MVC 中设置 CheckBox 的 Checked 属性

标签 c# asp.net-mvc spark-view-engine

我正在尝试解决 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/

相关文章:

asp.net - 使用 ASP.NET MVC 时从 Web 窗体访问 Html Helpers

c# - 如何使用 Massive ORM 实现验证?

c# - CaSTLe Windsor IoC 属性注入(inject)简单操作方法

c# - 调整 ListView 列以适应 WinForms

c# - ASP.NET MVC 的人类可读 URL 方案

asp.net-mvc - Spark View 最初工作,但在 30 分钟左右后收到 "Dynamic view compilation failed"错误

node.js - Spark View 引擎与 Node.js?

c# - 可收集的对象在我预制后不起作用

c# - HP ALM 12.21 REST API - 401 未经授权 - C#

asp.net - Spark-View-Engine 与 ASP.NET MVC2