Write.cshtml 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. @page
  2. @model Admin.Pages.Crypto.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" enctype="multipart/form-data" accept-charset="utf-8" autocomplete="off" class="mt-3">
  11. @Html.AntiForgeryToken()
  12. <div class="row mb-2">
  13. <label asp-for="Input.Symbol" class="col-sm-2 col-form-label">
  14. <span class="text-danger">*</span> 심볼
  15. </label>
  16. <div class="col-sm-10">
  17. <input asp-for="Input.Symbol" class="form-control text-uppercase" maxlength="30" required placeholder="BTC" />
  18. <div class="form-text">대문자로 자동 변환됩니다 (예: BTC, ETH)</div>
  19. <span asp-validation-for="Input.Symbol" class="text-danger"></span>
  20. </div>
  21. </div>
  22. <div class="row mb-2">
  23. <label asp-for="Input.KorName" class="col-sm-2 col-form-label">
  24. <span class="text-danger">*</span> 한글명
  25. </label>
  26. <div class="col">
  27. <input asp-for="Input.KorName" class="form-control" maxlength="200" required placeholder="비트코인" />
  28. <span asp-validation-for="Input.KorName" class="text-danger"></span>
  29. </div>
  30. </div>
  31. <div class="row mb-2">
  32. <label asp-for="Input.EngName" class="col-sm-2 col-form-label">
  33. <span class="text-danger">*</span> 영문명
  34. </label>
  35. <div class="col">
  36. <input asp-for="Input.EngName" class="form-control" maxlength="200" required placeholder="Bitcoin" />
  37. <span asp-validation-for="Input.EngName" class="text-danger"></span>
  38. </div>
  39. </div>
  40. <div class="row mb-2">
  41. <label asp-for="Input.LogoImageFile" class="col-sm-2 col-form-label">로고 이미지</label>
  42. <div class="col-sm-10">
  43. <div id="LogoImagePrev" hidden>
  44. <img class="img-fluid img-thumbnail" alt="로고 이미지 미리보기" style="max-width:128px;max-height:128px;" /><br />
  45. <button type="button" class="btn btn-sm btn-danger mt-2 mb-2 btn-remove-preview">삭제</button>
  46. </div>
  47. <input asp-for="Input.LogoImageFile" class="form-control" accept="image/*,.svg" />
  48. <div class="form-text">jpg, jpeg, png, gif, webp, svg</div>
  49. <span asp-validation-for="Input.LogoImageFile" class="text-danger"></span>
  50. </div>
  51. </div>
  52. <div class="row mb-2">
  53. <label asp-for="Input.CategoryIDs" class="col-sm-2 col-form-label">카테고리</label>
  54. <div class="col-sm-10 align-self-center">
  55. @if (Model.Categories.Count > 0)
  56. {
  57. <div class="border rounded p-2" style="max-height: 150px; overflow-y: auto;">
  58. @foreach (var cat in Model.Categories)
  59. {
  60. <div class="form-check">
  61. <input class="form-check-input" type="checkbox" name="Input.CategoryIDs" id="cat_@(cat.Value)" value="@cat.Value" />
  62. <label class="form-check-label" for="cat_@(cat.Value)">@cat.Text</label>
  63. </div>
  64. }
  65. </div>
  66. <span asp-validation-for="Input.CategoryIDs" class="text-danger"></span>
  67. } else {
  68. <span>-</span>
  69. }
  70. </div>
  71. </div>
  72. <div class="row mb-2">
  73. <label asp-for="Input.Description" class="col-sm-2 col-form-label">설명</label>
  74. <div class="col-sm-10">
  75. <textarea asp-for="Input.Description" class="form-control" rows="4" maxlength="5000" placeholder="코인에 대한 설명을 입력하세요."></textarea>
  76. <span asp-validation-for="Input.Description" class="text-danger"></span>
  77. </div>
  78. </div>
  79. <div class="row mb-2">
  80. <label asp-for="Input.ContractAddress" class="col-sm-2 col-form-label">컨트랙트 주소</label>
  81. <div class="col-md-10">
  82. <input asp-for="Input.ContractAddress" class="form-control" maxlength="100" placeholder="0x..." />
  83. <span asp-validation-for="Input.ContractAddress" class="text-danger"></span>
  84. </div>
  85. </div>
  86. <div class="row mb-2">
  87. <label asp-for="Input.WebsiteUrl" class="col-sm-2 col-form-label">Site URL</label>
  88. <div class="col-sm-10">
  89. <input asp-for="Input.WebsiteUrl" class="form-control" maxlength="500" placeholder="https://..." />
  90. <span asp-validation-for="Input.WebsiteUrl" class="text-danger"></span>
  91. </div>
  92. </div>
  93. <div class="row mb-2">
  94. <label asp-for="Input.WhitepaperUrl" class="col-sm-2 col-form-label">Whitepaper URL</label>
  95. <div class="col-sm-10">
  96. <input asp-for="Input.WhitepaperUrl" class="form-control" maxlength="500" placeholder="https://..." />
  97. <span asp-validation-for="Input.WhitepaperUrl" class="text-danger"></span>
  98. </div>
  99. </div>
  100. <div class="row mb-2">
  101. <label asp-for="Input.TwitterUrl" class="col-sm-2 col-form-label">Twitter URL</label>
  102. <div class="col-sm-10">
  103. <input asp-for="Input.TwitterUrl" class="form-control" maxlength="500" placeholder="https://twitter.com/..." />
  104. <span asp-validation-for="Input.TwitterUrl" class="text-danger"></span>
  105. </div>
  106. </div>
  107. <div class="row mb-3">
  108. <label asp-for="Input.TelegramUrl" class="col-sm-2 col-form-label">Telegram URL</label>
  109. <div class="col-sm-10">
  110. <input asp-for="Input.TelegramUrl" class="form-control" maxlength="500" placeholder="https://t.me/..." />
  111. <span asp-validation-for="Input.TelegramUrl" class="text-danger"></span>
  112. </div>
  113. </div>
  114. <div class="row">
  115. <label class="col-sm-2">상태</label>
  116. <div class="col-sm-10">
  117. <div class="d-flex gap-3 flex-wrap">
  118. <div class="form-check">
  119. <input asp-for="Input.IsActive" class="form-check-input" />
  120. <label asp-for="Input.IsActive" class="form-check-label">활성화</label>
  121. </div>
  122. <div class="form-check">
  123. <input asp-for="Input.IsNew" class="form-check-input" />
  124. <label asp-for="Input.IsNew" class="form-check-label text-primary">신규 상장</label>
  125. </div>
  126. <div class="form-check">
  127. <input asp-for="Input.IsWarning" class="form-check-input" />
  128. <label asp-for="Input.IsWarning" class="form-check-label text-danger">위험 경고</label>
  129. </div>
  130. <div class="form-check">
  131. <input asp-for="Input.IsDelisted" class="form-check-input" />
  132. <label asp-for="Input.IsDelisted" class="form-check-label text-warning">상장 폐지</label>
  133. </div>
  134. </div>
  135. </div>
  136. </div>
  137. <hr />
  138. <div class="d-grid gap-2 text-center d-md-block">
  139. <button type="submit" class="btn btn-success">저장</button>
  140. <a href="/Crypto/List/Index" class="btn btn-secondary">취소</a>
  141. </div>
  142. <br />
  143. </form>
  144. </div>
  145. @section Scripts {
  146. <script>
  147. setupImagePreview("Input_LogoImageFile", "LogoImagePrev");
  148. </script>
  149. }