Edit.cshtml 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. @model bitforum.Models.Account.MemberGrade
  2. @{
  3. ViewData["Title"] = "회원등급 수정";
  4. }
  5. <div class="container">
  6. <h3>@ViewData["Title"]</h3>
  7. <hr />
  8. <partial name="_StatusMessage" />
  9. <form name="f_admin_write" id="fAdminWrite" method="post" accept-charset="utf-8" autocomplete="off" action="/Member/Grade/Update" enctype="multipart/form-data">
  10. <input type="hidden" asp-for="ID" />
  11. <div class="row mb-2">
  12. <label for="Image" class="col-sm-2 col-form-label">이미지</label>
  13. <div class="col-sm-10">
  14. @if (Model.Image is not null && Model.Image != string.Empty)
  15. {
  16. <img src="@Url.Content(Model.Image)" class="img-fluid img-thumbnail" alt="@Model.KorName" />
  17. <div class="form-check-inline">
  18. <input type="checkbox" name="IsImageRemove" id="IsImageRemove" class="form-check-input" value="true" />
  19. <label for="IsImageRemove" class="form-check-label">삭제</label>
  20. </div>
  21. <input type="hidden" asp-for="Image" class="form-control" value="" />
  22. }
  23. else
  24. {
  25. <div id="gradePrev" hidden><img class="img-fluid img-thumbnail" alt="이미지 미리보기" /></div>
  26. <input type="file" asp-for="Image" class="form-control" accept="image/*" />
  27. <span asp-validation-for="Image" class="text-danger"></span>
  28. }
  29. </div>
  30. </div>
  31. <div class="row mb-2">
  32. <label for="KorName" class="col-sm-2 col-form-label"><span>*</span> 한글 명</label>
  33. <div class="col-sm-10">
  34. <input type="text" asp-for="KorName" class="form-control" required />
  35. <span asp-validation-for="KorName" class="text-danger"></span>
  36. </div>
  37. </div>
  38. <div class="row mb-2">
  39. <label for="EngName" class="col-sm-2 col-form-label"><span>*</span> 영문 명</label>
  40. <div class="col-sm-10">
  41. <input type="text" asp-for="EngName" class="form-control" required />
  42. <span asp-validation-for="EngName" class="text-danger"></span>
  43. </div>
  44. </div>
  45. <div class="row mb-2">
  46. <label for="Description" class="col-sm-2 col-form-label">내용</label>
  47. <div class="col-sm-10">
  48. <textarea asp-for="Description" class="form-control" placeholder="최대 1000자" rows="2" maxlength="1000"></textarea>
  49. <span asp-validation-for="Description" class="text-danger"></span>
  50. </div>
  51. </div>
  52. <div class="row mb-2">
  53. <label for="Order" class="col-sm-2 col-form-label"><span>*</span> 순서</label>
  54. <div class="col-sm-10">
  55. <input type="number" asp-for="Order" class="form-control d-inline w-auto" min="-999" max="999" required />
  56. <span asp-validation-for="Order" class="text-danger"></span>
  57. </div>
  58. </div>
  59. <div class="row mb-2">
  60. <label for="RequiredExp" class="col-sm-2"><span>*</span> 최소 요구 경험치<br />(Exp)</label>
  61. <div class="col-sm-10">
  62. <input type="number" asp-for="RequiredExp" class="form-control d-inline w-auto" min="0" required />
  63. <span asp-validation-for="RequiredExp" class="text-danger"></span>
  64. </div>
  65. </div>
  66. <div class="row mb-2">
  67. <label for="RequiredCoin" class="col-sm-2"><span>*</span> 최소 요구 코인<br />(Coin)</label>
  68. <div class="col-sm-10">
  69. <input type="number" asp-for="RequiredCoin" class="form-control d-inline w-auto" min="0" required />
  70. <span asp-validation-for="RequiredCoin" class="text-danger"></span>
  71. </div>
  72. </div>
  73. <div class="row mb-2">
  74. <label for="IsActive" class="col-sm-2 col-form-label">사용 여부</label>
  75. <div class="col-sm-10 align-content-center">
  76. <div class="form-check-inline">
  77. <input type="checkbox" asp-for="IsActive" class="form-check-input" />
  78. <label class="form-check-label" for="IsActive">
  79. 사용합니다.
  80. </label>
  81. <span asp-validation-for="IsActive" class="text-danger"></span>
  82. </div>
  83. </div>
  84. </div>
  85. @if (Model.UpdatedAt is not null)
  86. {
  87. <div class="row mb-2">
  88. <label class="col-sm-2 col-form-label">수정일시</label>
  89. <div class="col-sm-10">
  90. <input asp-for="UpdatedAt" class="form-control-plaintext" type="text" readonly />
  91. </div>
  92. </div>
  93. }
  94. @if (Model.CreatedAt != DateTime.MinValue)
  95. {
  96. <div class="row mb-2">
  97. <label class="col-sm-2 col-form-label">등록일시</label>
  98. <div class="col-sm-10">
  99. <input asp-for="CreatedAt" class="form-control-plaintext" type="text" readonly />
  100. </div>
  101. </div>
  102. }
  103. <hr />
  104. <div class="d-grid gap-2 text-center d-md-block">
  105. <button type="submit" class="btn btn-sm btn-success">저장</button>
  106. <a asp-action="Index" class="btn btn-sm btn-secondary">취소</a>
  107. </div>
  108. <br />
  109. </form>
  110. </div>
  111. @section Scripts {
  112. <script>
  113. setupImagePreview("Image", "gradePrev");
  114. // 이미지 삭제
  115. let oldImageSrc = "";
  116. document.getElementById("isImageRemove").addEventListener("change", function (e) {
  117. let image = document.getElementById("Image");
  118. if (e.target.checked) {
  119. oldImageSrc = image.src;
  120. image.src = "";
  121. } else {
  122. image.src = oldImageSrc;
  123. }
  124. });
  125. </script>
  126. }