0

我正在尝试从数据库中获取模型中对象的安全设置。我想根据登录用户的安全设置启用/禁用/隐藏渲染视图上的控件。

这是我到目前为止所得到的:

public class RestrictedObjectsViewModel
{
    [SecureObject(ObjectId = 1)]
    [Display(Name = "Name")]
    public string Name { get; set; }

    [SecureObject(ObjectId = 2)]
    [Display(Name = "Address")]
    public string Address { get; set; }

    [SecureObject(ObjectId = 3)]
    [Display(Name = "Phone Number")]
    public string PhoneNumber { get; set; }
}

使用这种方法,我将在数据库中查询每个正在渲染的对象。是否可以对模型中的整个对象只查询一次数据库以获得对象的权限列表?我该如何设置?

更新:

好的,让我详细介绍一下。

在我的代码中,当我将以下属性设置为一个对象时,我已经编写了我的 HTML 来隐藏渲染对象的关联表格行:

[SecureObject(IsInvisible = true)]

上面的代码在我的测试中正常工作。但是,当我尝试执行以下操作时:

public class RestrictedObjectsViewModel
{
    [SecureObject(IsInvisible = ObjectId3Invisible)]
    [Display(Name = "Phone Number")]
    public string PhoneNumber { get; set; }

    public RestrictedObjectsViewModel(bool setPermissions = false)
    {
        if (setPermissions)
        {
            ObjectId3Invisible = true;
        }
    }
    public bool ObjectId3Invisible = false;
}

我收到一条错误消息,提示“非静态字段、方法或属性‘MyProject.Models.RestrictedObjectsViewModel.ObjectId3Invisible’需要对象引用”

这是控制器:

public ActionResult RestrictedObjects()
{
    return View(new Models.RestrictedObjectsViewModel(true));
}

如果我将其更改ObjectId3Invisible为静态,我将无法在运行时将值更改为 true 或 false。

有什么建议么?

4

0 回答 0