Write.cshtml 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. @page
  2. @model Admin.Pages.Banner.List.WriteModel
  3. @{
  4. ViewData["Title"] = "배너 등록";
  5. }
  6. <div class="container">
  7. <h3>@ViewData["Title"]</h3>
  8. <hr />
  9. <partial name="_StatusMessage" />
  10. <form id="fAdminWrite" method="post" accept-charset="utf-8" autocomplete="off" enctype="multipart/form-data">
  11. <div class="row mb-2">
  12. <label asp-for="Input.PositionID" class="col-sm-2 col-form-label"><span class="text-danger">*</span> 배너 위치</label>
  13. <div class="col-sm-10">
  14. <div class="row">
  15. <div class="col col-md-auto">
  16. <select asp-for="Input.PositionID" class="form-select" asp-items="Model.Positions" required></select>
  17. </div>
  18. </div>
  19. <span asp-validation-for="Input.PositionID" class="text-danger"></span>
  20. </div>
  21. </div>
  22. <div class="row mb-2">
  23. <label asp-for="Input.Subject" class="col-sm-2 col-form-label"><span class="text-danger">*</span> 배너 명</label>
  24. <div class="col-sm-10">
  25. <input asp-for="Input.Subject" class="form-control" required />
  26. <span asp-validation-for="Input.Subject" class="text-danger"></span>
  27. </div>
  28. </div>
  29. <div class="row mb-2">
  30. <label asp-for="Input.Link" class="col-sm-2 col-form-label">링크 주소</label>
  31. <div class="col-sm-10">
  32. <input asp-for="Input.Link" class="form-control" type="url" placeholder="https://example.com" />
  33. <span asp-validation-for="Input.Link" class="text-danger"></span>
  34. <div class="form-check form-check-inline mt-2">
  35. <input type="radio" asp-for="Input.LinkTarget" value="_self" class="form-check-input" id="lt_self" />
  36. <label class="form-check-label" for="lt_self">현재 창</label>
  37. </div>
  38. <div class="form-check form-check-inline">
  39. <input type="radio" asp-for="Input.LinkTarget" value="_blank" class="form-check-input" id="lt_blank" />
  40. <label class="form-check-label" for="lt_blank">새 창</label>
  41. </div>
  42. <span asp-validation-for="Input.LinkTarget" class="text-danger"></span>
  43. </div>
  44. </div>
  45. <div class="row mb-2">
  46. <label class="col-sm-2 col-form-label">이미지</label>
  47. <div class="col-sm-10">
  48. <div class="mb-3">
  49. <label asp-for="Input.DesktopImageFile" class="form-label">Desktop</label>
  50. <div id="DesktopBannerPrev" hidden>
  51. <img class="img-fluid img-thumbnail" alt="이미지(Desktop) 미리보기" /><br />
  52. <button type="button" class="btn btn-sm btn-danger mt-2 mb-2 btn-remove-preview">제거</button>
  53. </div>
  54. <input asp-for="Input.DesktopImageFile" type="file" class="form-control" accept="image/*" />
  55. <span asp-validation-for="Input.DesktopImageFile" class="text-danger"></span>
  56. </div>
  57. <div>
  58. <label asp-for="Input.MobileImageFile" class="form-label">Mobile</label>
  59. <div id="MobileBannerPrev" hidden>
  60. <img class="img-fluid img-thumbnail" alt="이미지(Mobile) 미리보기" /><br />
  61. <button type="button" class="btn btn-sm btn-danger mt-2 mb-2 btn-remove-preview">제거</button>
  62. </div>
  63. <input asp-for="Input.MobileImageFile" type="file" class="form-control" accept="image/*" />
  64. <span asp-validation-for="Input.MobileImageFile" class="text-danger"></span>
  65. </div>
  66. </div>
  67. </div>
  68. <div class="row mb-2">
  69. <label asp-for="Input.Order" class="col-sm-2 col-form-label"><span class="text-danger">*</span> 순서</label>
  70. <div class="col-sm-10">
  71. <div class="row">
  72. <div class="col col-md-auto">
  73. <input asp-for="Input.Order" class="form-control" type="number" min="-9999" max="9999" required />
  74. </div>
  75. </div>
  76. <span asp-validation-for="Input.Order" class="text-danger"></span>
  77. </div>
  78. </div>
  79. <div class="row mb-2">
  80. <label class="col-sm-2 col-form-label">노출 기간</label>
  81. <div class="col-sm-10">
  82. <div class="row g-2">
  83. <div class="col col-md-auto">
  84. <input asp-for="Input.StartAt" class="form-control" />
  85. <span asp-validation-for="Input.StartAt" class="text-danger"></span>
  86. </div>
  87. <div class="col-auto d-none d-md-block align-self-center">~</div>
  88. <div class="col col-md-auto">
  89. <input asp-for="Input.EndAt" class="form-control" />
  90. <span asp-validation-for="Input.EndAt" class="text-danger"></span>
  91. </div>
  92. </div>
  93. <span class="text-muted form-text">
  94. 노출 기간을 입력하지 않으면 항상 표시됩니다.
  95. </span>
  96. </div>
  97. </div>
  98. <div class="row mb-2">
  99. <label asp-for="Input.IsActive" class="col-sm-2 col-form-label">사용 여부</label>
  100. <div class="col-sm-10 align-content-center">
  101. <div class="form-check-inline">
  102. <input type="checkbox" asp-for="Input.IsActive" class="form-check-input" />
  103. <label class="form-check-label" asp-for="Input.IsActive">사용함</label>
  104. <span asp-validation-for="Input.IsActive" class="text-danger"></span>
  105. </div>
  106. </div>
  107. </div>
  108. <hr />
  109. <div class="row">
  110. <div class="col text-center p-3">
  111. <button type="submit" class="btn btn-success">저장</button>
  112. <a href="/Banner/List@(Model.QueryString)" class="btn btn-secondary">취소</a>
  113. </div>
  114. </div>
  115. <br />
  116. </form>
  117. </div>
  118. @section Scripts {
  119. <script>
  120. setupImagePreview("Input_DesktopImageFile", "DesktopBannerPrev");
  121. setupImagePreview("Input_MobileImageFile", "MobileBannerPrev");
  122. </script>
  123. }