我正在ASP.NET MVC中开发CRUD应用程序,我已经实现了可与AD一起使用的安全性部分,现在我想简化向用户分配varius权限的过程。所有组和用户都存储在数据库中,它们受此关系约束:
在我当前的视图下,这是行不通的,它只是图形。
这是我的查看代码:
<body>
<div class="container">
<br />
<table class="table table-responsive table-bordered">
@{
//inizialize my ef context
dev_labelsEntities db = new dev_labelsEntities();
//get all users stored in the db
var users = from u in db.Users
orderby u.username
select new
{
u.username
};
//get all groups from the db
var groups = from g in db.Groups
orderby g.group_name
select new
{
g.group_name
};
<tr>
<th>Username</th>
@foreach (var item in groups)
{
<td>@Html.DisplayFor(model => item.group_name)</td>
}
</tr>
foreach (var item in users)
{
int count = 1;
<tr>
<td>@Html.DisplayFor(model => item.username)</td>
@foreach (var itemG in groups)
{
//for distinguish the varius checkbox i use the name
//of the group and a generic count which indicates
//the row number
<td>@Html.CheckBox(""+itemG.group_name+"_"+count)</td>
}
</tr>
count++;
}
}
</table>
</div>
</body>
我期望的最终结果是:当用户选中一个复选框时,请在UserGrops表中调用插入操作,以便一个用户可以拥有一个以上的组(仅当该用户属于Admins组时,所有其他复选框都必须被禁用),而当用户取消选中该复选框后,该表具有特定权限的用户(例如,用户Jonh属于pc和打印机组,我取消选中对应于打印机组的复选框,则该条目将从表,因此Jonh只能访问pc部分。
如果有人对实现它有任何建议或技巧,我将不胜感激。
狮子座
编辑
我已将此脚本添加为@Amine建议:
$(document).ready(function () {
$('.chkclass').click(function () {
var getchkid = $(this).attr('id');
var isChecked = $('#' + getchkid).is(':checked');
if ($('#' + getchkid).is(':checked') == true) {
// the value that i need
var username = $(this).attr('username');
var groupname = $(this).attr('groupname');
//ajax for calling my action medthod
$.ajax({
type: 'Post',
url: '/UserGroups/ManagePermission',
cache: false,
dataType: 'Json',
data: { usr: username, grp: groupname },
//success: function (data) {
//},
//error: function (xhr, ajaxOptions, thrownError) {
// alert(thrownError);
//}
})
}
});
});
该方法接收到正确的值,但在简单测试后会发生
之前:
之后:
为什么会这样?
答案 0 :(得分:1)
在HTML中使用
<input type="checkbox" class="chkclass" username="@item.username" groupname="@itemG.group_name" id="@count" />
代替
<td>@Html.CheckBox(""+itemG.group_name+"_"+count)</td>
您可以使用类似脚本的脚本
$(document).ready(function () {
$('.chkclass').click(function () {
var getchkid = $(this).attr('id');
var isChecked = $('#' + getchkid).is(':checked');
if ($('#' + getchkid).is(':checked') == true) {
// to be send to your call
var username = $(this).attr('username');
var groupname = $(this).attr('groupname');
//here put your call ajax to your action
$.ajax({
type: "POST",
url: //your URL
data: '{}', // your Data
....
}
});
});