【发布时间】:2014-02-19 13:13:38
【问题描述】:
在我的应用程序中,我有带菜单的导航栏。在菜单中,我有 3 个下拉菜单。
- 公开
- 普通用户
- 对于管理员
访问受到限制,但菜单对所有人可见。我想为普通用户和公共(任何)用户隐藏不必要的元素。
我使用 Windows 登录名进行身份验证
为了获得一个用户角色,如果用户是普通用户或管理员,我询问数据库和查询返回。
我的解决方案:
public bool CheckIfAdmin(string login)
{
bool admin = false;
EquipmentEntities db = new EquipmentEntities();
Tuple<string, string> credentials = GetName(login);
int RoleId = db.Users.Where(w => w.Name == credentials.Item1).Where(w => w.Surname == credentials.Item2).Select(s => s.RoleId).FirstOrDefault();
if(RoleId==1)
{
admin = true;
}
return admin;
}
用于检查用户是否为几乎相同的代码
在方法中:
if(CheckIfAdmin(login)){
ViewBag.Role=1;
}
else if(CheckIfUser(login)){
ViewBag.Role=2;
}
最后在布局中:
@if (ViewBag.Role==1)
{
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Admin<b class="caret"></b></a>
<ul class="dropdown-menu">
//MEnu
</ul>
</li>
}
我想隐藏的第二个下拉列表的代码几乎相同。 这是可行的,但此时我需要检查每种方法中的角色。其大量的冗余代码。谁能建议我如何让它变得更好?
【问题讨论】:
标签: c# asp.net-mvc twitter-bootstrap