Я разрабатываю приложение CRUD в ASP.NET MVC, я уже внедрил часть безопасности, которая работает с 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, поэтому пользователь может иметь более одной группы (только если пользователь принадлежит группе «Администраторы», все остальные флажки должны быть отключены), тогда как при снятии флажка с пользователя удаляется из таблицы соответствующий пользователь с определенным разрешением (например,пользователь Jonh принадлежит к группам компьютеров и принтеров, я снимаю флажок, соответствующий группе принтеров, эта запись будет удалена из таблицы, и Jonh сможет получить доступ только к части компьютера).
Если кто-тоЯ буду признателен за любые советы или советы по его реализации.
Лев
РЕДАКТИРОВАТЬ
Я добавил к своему представлению этот скрипт, поскольку @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);
//}
})
}
});
});
Метод получает правильное значение, но после простого теста это происходит
До:
После:
Почему это поведение?