Edit.cshtml 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. @page "{id:int}"
  2. @model Admin.Pages.Banner.List.EditModel
  3. @{
  4. ViewData["Title"] = "배너 수정";
  5. }
  6. <div class="container">
  7. <h3>@ViewData["Title"]</h3>
  8. <hr />
  9. <div asp-validation-summary="ModelOnly" class="text-danger"></div>
  10. <partial name="_StatusMessage" />
  11. <form id="fAdminWrite" method="post" accept-charset="utf-8" autocomplete="off" enctype="multipart/form-data">
  12. <input type="hidden" asp-for="Input.ID" />
  13. <input type="hidden" asp-for="QueryString" />
  14. <div class="row mb-2">
  15. <label asp-for="Input.PositionID" class="col-sm-2 col-form-label"><span>*</span> 배너 위치</label>
  16. <div class="col-sm-10">
  17. <div class="row">
  18. <div class="col col-md-auto">
  19. <select asp-for="Input.PositionID" class="form-select" asp-items="Model.Positions" required></select>
  20. </div>
  21. </div>
  22. <span asp-validation-for="Input.PositionID" class="text-danger"></span>
  23. </div>
  24. </div>
  25. <div class="row mb-2">
  26. <label asp-for="Input.Subject" class="col-sm-2 col-form-label"><span>*</span> 배너 명</label>
  27. <div class="col-sm-10">
  28. <input asp-for="Input.Subject" class="form-control" required />
  29. <span asp-validation-for="Input.Subject" class="text-danger"></span>
  30. </div>
  31. </div>
  32. <div class="row mb-2">
  33. <label asp-for="Input.Link" class="col-sm-2 col-form-label"></label>
  34. <div class="col-sm-10">
  35. <input asp-for="Input.Link" class="form-control" />
  36. <span asp-validation-for="Input.Link" class="text-danger"></span>
  37. </div>
  38. </div>
  39. <div class="row mb-2">
  40. <label class="col-sm-2 col-form-label">현재 이미지</label>
  41. <div class="col-sm-10">
  42. <div class="mb-2">
  43. <div class="form-text">
  44. Desktop
  45. @if (Model.CurrentDesktopImage != null)
  46. {
  47. <br/>
  48. <img src="@Model.CurrentDesktopImage" class="img-thumbnail img-fluid rounded" />
  49. } else {
  50. <text>-</text>
  51. }
  52. </div>
  53. </div>
  54. <div>
  55. <div class="form-text">
  56. Mobile
  57. @if (Model.CurrentMobileImage != null)
  58. {
  59. <br />
  60. <img src="@Model.CurrentMobileImage" class="img-thumbnail img-fluid rounded" />
  61. }
  62. else
  63. {
  64. <text>-</text>
  65. }
  66. </div>
  67. </div>
  68. </div>
  69. </div>
  70. <div class="row mb-2">
  71. <label class="col-sm-2 col-form-label">이미지</label>
  72. <div class="col-sm-10">
  73. <div class="mb-3">
  74. <label asp-for="Input.DesktopImageFile" class="form-label">Desktop</label>
  75. <div id="DesktopBannerPrev" hidden>
  76. <img class="img-fluid img-thumbnail" alt="이미지(Desktop) 미리보기" /><br />
  77. <button type="button" class="btn btn-sm btn-danger mt-2 mb-2 btn-remove-preview">삭제</button>
  78. </div>
  79. <input asp-for="Input.DesktopImageFile" type="file" class="form-control" accept="image/*" />
  80. <span asp-validation-for="Input.DesktopImageFile" class="text-danger"></span>
  81. </div>
  82. <div>
  83. <label asp-for="Input.MobileImageFile" class="form-label">Mobile</label>
  84. <div id="MobileBannerPrev" hidden>
  85. <img class="img-fluid img-thumbnail" alt="이미지(Mobile) 미리보기" /><br />
  86. <button type="button" class="btn btn-sm btn-danger mt-2 mb-2 btn-remove-preview">삭제</button>
  87. </div>
  88. <input asp-for="Input.MobileImageFile" type="file" class="form-control" accept="image/*" />
  89. <span asp-validation-for="Input.MobileImageFile" class="text-danger"></span>
  90. </div>
  91. </div>
  92. </div>
  93. <div class="row mb-2">
  94. <label asp-for="Input.Order" class="col-sm-2 col-form-label"><span class="text-danger">*</span> 순서</label>
  95. <div class="col-sm-10">
  96. <div class="row">
  97. <div class="col col-md-auto">
  98. <input asp-for="Input.Order" class="form-control" type="number" min="-9999" max="9999" required />
  99. </div>
  100. </div>
  101. <span asp-validation-for="Input.Order" class="text-danger"></span>
  102. </div>
  103. </div>
  104. <div class="row mb-2">
  105. <label class="col-sm-2 col-form-label">사용 기간</label>
  106. <div class="col-sm-10">
  107. <div class="row g-2">
  108. <div class="col col-md-auto">
  109. <input asp-for="Input.StartAt" class="form-control" />
  110. <span asp-validation-for="Input.StartAt" class="text-danger"></span>
  111. </div>
  112. <div class="col-auto d-none d-md-block align-self-center">~</div>
  113. <div class="col col-md-auto">
  114. <input asp-for="Input.EndAt" class="form-control" />
  115. <span asp-validation-for="Input.EndAt" class="text-danger"></span>
  116. </div>
  117. </div>
  118. <span class="text-muted form-text">
  119. 사용 기간을 설정하지 않으면 무제한으로 사용됩니다.
  120. </span>
  121. </div>
  122. </div>
  123. <div class="row mb-2">
  124. <label asp-for="Input.IsActive" class="col-sm-2 col-form-label">사용 여부</label>
  125. <div class="col-sm-10 align-content-center">
  126. <div class="form-check-inline">
  127. <input type="checkbox" asp-for="Input.IsActive" class="form-check-input" />
  128. <label class="form-check-label" asp-for="Input.IsActive">사용합니다.</label>
  129. <span asp-validation-for="Input.IsActive" class="text-danger"></span>
  130. </div>
  131. </div>
  132. </div>
  133. <hr/>
  134. <div class="row">
  135. <div class="col text-center p-3">
  136. <button type="submit" class="btn btn-success">저장</button>
  137. <a href="/Banner/List?@Model.QueryString" class="btn btn-secondary">취소</a>
  138. </div>
  139. </div>
  140. <br/>
  141. </form>
  142. </div>
  143. @section Scripts {
  144. <script>
  145. setupImagePreview("Input_DesktopImageFile", "DesktopBannerPrev");
  146. setupImagePreview("Input_MobileImageFile", "MobileBannerPrev");
  147. </script>
  148. }