C# 获取数组内容作为Viewbag项的正确方法
我决定为此发布一个不同的问题。这个问题与另一个帖子有关。 我昨天贴的。我在这个项目中找到了一个可以很容易地实现我想要的东西的领域,我只是需要一个合适的方法来实现它 我有一个BaseController,仪表板中的所有控制器也都与之相关。在这方面,我有一个C# 获取数组内容作为Viewbag项的正确方法,c#,asp.net-mvc,C#,Asp.net Mvc,我决定为此发布一个不同的问题。这个问题与另一个帖子有关。 我昨天贴的。我在这个项目中找到了一个可以很容易地实现我想要的东西的领域,我只是需要一个合适的方法来实现它 我有一个BaseController,仪表板中的所有控制器也都与之相关。在这方面,我有一个 protected override void OnActionExecuting(ActionExecutingContext context) 在本文中,我获取了几个东西UserId、RoleId等。它还有一行代码,返回一个对象/权限
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; }
}
我只对Bools感兴趣,因为我试图隐藏视图上的按钮,这些按钮只显示用户是否也有访问权限
所以我试着这样使用它:
ViewBag.Menu = menuaccess;
然后在我看来,我做了一个if声明:
@if (ViewBag.Menu.IsUpdate == true)
但是它说系统阵列没有IsUpdate。
在放置断点和查看局部变量时,MenuOfRole返回列表,结果为true或false
所以我的问题是,在我看来,有没有一种方法可以称之为并使用它?用可视包或其他方式?由于这已经完成了我需要的所有工作,我真的不需要进行会话,只需要对按钮进行另一次检查
提前感谢您的帮助
更新:这似乎是为这个工作。我不确定这是否是正确的方法,但它正在发挥作用
利用已经存在的资源
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将带回角色有权访问的所有内容。所以我需要一种方法来指定我在哪一个上。我认为在每个控制器中添加一些要检查的内容。我得想想这个 将
MenuOfRole
对象数组指定给ViewBag.Menu
。数组本身没有IsUpdate
属性-只有数组中的项。您想知道数组中是否有任何项具有该属性true吗?还是全部?我需要每一个单独的。因此,如果IsUpdate为false,那么它将隐藏编辑按钮。如果IsCreate为false,则会隐藏Create按钮。依此类推。因此,您需要在某个地方循环查看ViewBag.Menu
的内容,并检查每个项目的属性。在不知道这些项目和按钮是如何连接的情况下,无法添加更多内容。它们将通过if语句连接。处理菜单项的方式是循环,但如果IsForNavbar的菜单项为true,则也会将菜单项显示为数组。我真的不想有一个按钮数组,因为按钮有参数,要使其正常工作需要大量的工作。我不知道如何从这里提供帮助-您有一个项目集合,所以我猜对于每个按钮,您都需要在数组中找到与按钮对应的适当项目,然后检查该项目的IsUpdate
值。没有更多关于整体视图和模型的知识,这就是我所能告诉你的。