Index.cshtml 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. @page
  2. @model Admin.Pages.Director.Role.IndexModel
  3. @{
  4. ViewData["Title"] = "역할 관리";
  5. }
  6. <div class="container">
  7. <div class="row">
  8. <div class="col">
  9. <h3>@ViewData["Title"]</h3>
  10. </div>
  11. <div class="col text-end align-self-center">
  12. <a asp-page="/Director/User/Index" class="btn btn-secondary">취소</a>
  13. </div>
  14. </div>
  15. <hr />
  16. <div asp-validation-summary="ModelOnly" class="text-danger"></div>
  17. <partial name="_StatusMessage" />
  18. <form name="f_admin_write" id="fAdminWrite" method="post" accept-charset="utf-8" autocomplete="off">
  19. <div class="input-group mb-3">
  20. <label class="input-group-text" for="roleName">Role:</label>
  21. <input asp-for="RoleName" class="form-control" placeholder="역할(Role)을 입력해주세요." required maxlength="100"/>
  22. <button type="submit" class="btn btn-sm btn-success">역할 추가</button>
  23. </div>
  24. </form>
  25. <!-- 삭제를 위한 -->
  26. <form id="deleteRoleForm" method="post" accept-charset="utf-8" asp-page-handler="Delete">
  27. @Html.AntiForgeryToken()
  28. <input type="hidden" id="deleteRoleID" name="id" />
  29. </form>
  30. <div class="table-responsive">
  31. <table class="table table-bordered table-striped table-hover mt-4">
  32. <thead>
  33. <tr class="text-center">
  34. <th>ID</th>
  35. <th>Role Name</th>
  36. <th>Permission</th>
  37. <th>Actions</th>
  38. </tr>
  39. </thead>
  40. <tbody>
  41. @if (Model.List == null || !Model.List.Any())
  42. {
  43. <tr>
  44. <td colspan="4">No Data.</td>
  45. </tr>
  46. }
  47. else
  48. {
  49. @foreach (var role in Model.List)
  50. {
  51. <tr>
  52. <td>@role.ID</td>
  53. <td>@role.Name</td>
  54. <td>@role.ClaimsCount</td>
  55. <td>
  56. <button type="button" class="btn btn-sm btn-danger btn-row-delete" data-id="@role.ID" data-name="@role.Name">삭제</button>
  57. <a class="btn btn-sm btn-primary" asp-page="/Director/Role/Permission" asp-route-id="@role.ID">권한 관리</a>
  58. </td>
  59. </tr>
  60. }
  61. }
  62. </tbody>
  63. </table>
  64. </div>
  65. </div>
  66. @section Scripts {
  67. <script>
  68. document.addEventListener("click", function(e) {
  69. const btn = e.target.closest('.btn-row-delete');
  70. if (!btn) {
  71. return;
  72. }
  73. const id = btn.dataset.id;
  74. const name = btn.dataset.name;
  75. const label = name ? `역할 '${name}'` : '해당 역할';
  76. if (!confirm(`${label}을(를) 삭제하시겠습니까?`)) {
  77. return;
  78. }
  79. document.getElementById('deleteRoleID').value = id;
  80. document.getElementById('deleteRoleForm').submit();
  81. });
  82. </script>
  83. }