c# - 将数组内容作为 Viewbag 项获取的正确方法
问题描述
我决定为此发布一个不同的问题。这个问题与另一个帖子有关。 stackoverflow.com/questions/60141639/
我昨天发了这个。我在项目中找到了一个可以很容易实现我想要的区域,我只需要正确的方法来实现它..
我有一个 BaseController,仪表板中的所有控制器也都相关。在这我有一个
protected override void OnActionExecuting(ActionExecutingContext context)
在这个我抓住了几个东西 UserId、RoleId 等。它还有一行代码返回一个对象/权限数组。
var menuaccess = (MenuOfRole[])global;
MenuOfRole 是这样的:
private class MenuOfRole
{
public string MenuURL { get; set; }
public string RoleId { get; set; }
public string UserId { get; set; }
public bool IsAdd { get; set; }
public bool IsCreate { get; set; }
public bool IsRead { get; set; }
public bool IsUpdate { get; set; }
public bool IsDelete { get; set; }
}
我只对布尔值感兴趣,因为我试图在我的视图上隐藏仅显示用户是否也可以访问的按钮。
所以我试着像这样使用它:
ViewBag.Menu = menuaccess;
然后在我看来,我做了一个 if 语句:
@if (ViewBag.Menu.IsUpdate == true)
但是它说系统数组没有 IsUpdate。放置断点并查看本地菜单时,MenuOfRole 会返回列表以及结果为真或假。
所以我的问题是,有没有办法可以调用它并在我看来使用它?使用 viewBag 还是其他方式?由于这已经完成了我需要的所有工作,因此我真的不需要进行会话并再次检查按钮。
在此先感谢您的帮助!
更新:这似乎适用于此。我不确定这是否是正确的方法,但它正在工作..
利用这个已经存在
var GetOrPost = context.HttpContext.Request.HttpMethod.ToString();
添加了这个:
if (GetOrPost == "GET")
{
if (actionName == "add" || actionName == "index" || actionName == "create" || actionName == "edit" || actionName == "delete" || actionName == "multiviewindex")
{
ViewBag.Add = menuaccess.FirstOrDefault(i => (i.IsAdd));
ViewBag.Read = menuaccess.FirstOrDefault(i => (i.IsRead));
ViewBag.Create = menuaccess.FirstOrDefault(i => (i.IsCreate));
ViewBag.Edit = menuaccess.FirstOrDefault(i => (i.IsUpdate));
ViewBag.Delete = menuaccess.FirstOrDefault(i => (i.IsDelete));
}
}
对此有什么想法吗?我只是想确保我正确地执行此操作并且不妨碍性能..
这就是我在按钮视图中所做的事情..
@if (ViewBag.Edit = true) {
@Ajax.ModalDialogActionLink("Edit", "Edit", "Edit User", "btn btn-warning btn-sm", new { UserName = item.UserName })
}
更新:这需要更多的工作.. MenuOfRoles 带回角色有权访问的所有内容。所以我需要一种方法来指定我在哪个。我在想在每个控制器中添加一些要检查的东西。我得考虑一下这个!
解决方案
推荐阅读
- php - 列为空时不匹配
- mysql - MySQL Workbench 报告 ERROR 1822: Failed to add the foreign key constraint。缺少约束索引
- python - 如何使用 matplot lib 绘制日期与时间的大型数据集
- javascript - Bootstrap Modal 没有正确淡入
- javascript - Vuetify 密码验证包括特殊字符、大写字母、数字和最小长度 6 个字符
- c - 给出奇怪行为的 C 结构数组
- oracle - 需要修复动态向表中插入值的过程
- c - 根据字符串的字符大小与整个字符串的大小为字符串分配内存空间之间的差异
- python - 使用 pandas_profiling profile_report 时出现 MemoryError
- javascript - 如何将对象/数组分配给另一个对象?