MVC中CheckBox问题,在线等,急求...

pjw100 2011-05-12 09:52:26
我有三个表:
Users(UserId, UserName)
Permissions (PermissionId, Name, Url)
PermissionLists (UserId, PermissionId) UserId,PermissionId联合主键,同时也是外键。
大家都看得出这三个表是和权限相关的基本表。

假定现在有一个编辑权限的页面:EditPermission.shtml,当前登录的是超级管理员,对一个普通管理员进行权限编辑。
假定现在总共有三项权限:AddUser, DeleteUser, EditUser。当前被编辑的普通管理员只有AddUser这一项权限。

问题1: 如何让这位被编辑的普通管理员已有的权限的Checobox处于选中状态。
问题2: 我使用的是EntityFramwork, 基本对象模型代码如下

public class User
{
public int UserId{get;set;}
public string UserName{get;set;}

public virtual ICollection<PermissionList> PermissionLists { get; set; }
}

public class Permission
{
public int PermissionId{get;set;}
public string Name{get;set;}
public string Url{get;set;}

public virtual ICollection<PermissionList> PermissionLists { get; set; }
}

public class PermissionList
{
public int UserId{get;set;}
public int PermissionId{get;set;}
}

在这个EditPermission.shtml页面里,我如果用User作为model,也就是在头部有一行这个玩意
@model MyProject.Entity.User, 通过Model.PermissionLists 属性我只能获取它已有的权限(在这里就是AddUser权限,上文有提到过),那我如何在这个页面中显示三个Checkbox,而AddUser所属的这个Checkbox是选中的呢?

问题3:在我编辑完权限提交时(假定AddUser,DeleteUser,EditUser都被选中了),我用什么方式去处理提交呢?(我这里提供的是User对象,最终要修改的是PermissionLists表),在ActionResult中我提供的参数是(int userID, FormCollection collection)






...全文
533 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
a6389639 2011-05-12
  • 打赏
  • 举报
回复
....不懂,,,没用过这种方式。。。观望中。
Lisliefor 2011-05-12
  • 打赏
  • 举报
回复
新增、修改、删除权限时,都把PermissionLists 的当前操作用户的记录清除掉,delete from PermissionLists where UserId=×××

然后,新增三条权限记录,权限标识则按照你页面checkbox的状态来,这样就OK了。
Lisliefor 2011-05-12
  • 打赏
  • 举报
回复
这是设计上的问题,本来你的权限没有那么复杂的话,干脆就把AddUser、DelUser和UpdateUser的权限直接放到User表中,用一个true和false就可以简单的把权限标识清楚。

你现在的做法是灵活一些,可扩展性强一些。
问题也就出在这里,你现在设计的数据库,只知道这个人有什么权限,而不知道这个人没有什么权限。

其实做法很简单,你在PermissionLists 表新增一个字段,是否有权限的标识。
这意味着,每个用户在PermissionLists 表中的记录的数量是一样的,只是有权限的项目,这个标识是true,没权限的项,这个标识是false。

这样一来,你目前所遇到的问题都能解决。
nayc 2011-05-12
  • 打赏
  • 举报
回复
不会MVC + EntityFramework
传统方式下的我略懂。。。,不知LZ需要否
pjw100 2011-05-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 qjmay860909 的回复:]

大头菜来帮顶!!
貌似很快此楼就会塌了。。。
[/Quote]
我也觉得要塌。第一次用MVC + EntityFramework去做东西,有点儿阻力啊。
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 dianachen2 的回复:]
问题1:dataset ds = db.static_excutyNonDataSet(执行SQL取出你的别修改对象的权限);
然后for(i = 0 ; i < ds.table[0].Rows[i].count;i++)
{
checkboxlist.items.add(i, ds.table[0].rows[i][权限列]);
判断CHECKBOXLIST有值,check = tru……
[/Quote]
代码可能记得不全,我这没开发工具,但是希望你能看到思路
  • 打赏
  • 举报
回复
问题1:dataset ds = db.static_excutyNonDataSet(执行SQL取出你的别修改对象的权限);
然后for(i = 0 ; i < ds.table[0].Rows[i].count;i++)
{
checkboxlist.items.add(i, ds.table[0].rows[i][权限列]);
判断CHECKBOXLIST有值,check = true
}
问题2用CHECKBOXLIST,问题1的方法可以解决
问题3,从写方法,参数为LIST,集合也行
遍历CHECKBOXLIST,和一个被修改用户name
进行存储
失去乐山贼 2011-05-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 a6389639 的回复:]

....不懂,,,没用过这种方式。。。观望中。
[/Quote]
同样观望~

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧