我正在尝试从数据库中获取模型中对象的安全设置。我想在我的渲染视图上启用/禁用/隐藏控件,具体取决于登录用户的安全设置。
这是我到目前为止所得到的:
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。
有什么建议吗?