Write.cshtml 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. @model bitforum.Models.Account.Member
  2. @using bitforum.Constants
  3. @{
  4. ViewData["Title"] = "회원 등록";
  5. }
  6. <div class="container">
  7. <h3>@ViewData["Title"]</h3>
  8. <hr />
  9. <partial name="_StatusMessage" />
  10. <form name="f_admin_write" id="fAdminWrite" method="post" accept-charset="utf-8" autocomplete="off" action="/Member/List/Create" enctype="multipart/form-data">
  11. <div class="row mb-2">
  12. <label for="GradeID" class="col-sm-2 col-form-label">회원등급</label>
  13. <div class="col-sm-10">
  14. <select id="GradeID" name="GradeID" class="form-select w-auto" asp-items="ViewBag.MemberGrades">
  15. <option value="">등급 선택</option>
  16. </select>
  17. <span asp-validation-for="GradeID" class="text-danger"></span>
  18. </div>
  19. </div>
  20. <div class="row mb-2">
  21. <label for="Email" class="col-sm-2 col-form-label"><span>*</span> 이메일</label>
  22. <div class="col-sm-10">
  23. <input type="email" asp-for="Email" class="form-control" required maxlength="60" placeholder="중복 시 등록이 불가합니다. 60자 이내" />
  24. <span asp-validation-for="Email" class="text-danger"></span>
  25. </div>
  26. </div>
  27. <div class="row mb-2">
  28. <label for="Name" class="col-sm-2 col-form-label"><span>*</span> 별명</label>
  29. <div class="col-sm-10">
  30. <input type="text" asp-for="Name" class="form-control" required maxlength="20" placeholder="중복 시 등록이 불가합니다. 20자 이내" />
  31. <span asp-validation-for="Name" class="text-danger"></span>
  32. </div>
  33. </div>
  34. <div class="row mb-2">
  35. <label for="Password" class="col-sm-2 col-form-label"><span>*</span> 비밀번호</label>
  36. <div class="col-sm-10">
  37. <input type="password" asp-for="Password" class="form-control" required minlength="4" />
  38. <span asp-validation-for="Password" class="text-danger"></span>
  39. </div>
  40. </div>
  41. <div class="row mb-2">
  42. <label for="RePassword" class="col-sm-2 col-form-label"><span>*</span> 비밀번호 확인</label>
  43. <div class="col-sm-10">
  44. <input type="password" name="RePassword" id="RePassword" class="form-control" required minlength="4" />
  45. </div>
  46. </div>
  47. <hr/>
  48. <div class="row mb-2">
  49. <label for="FirstName" class="col-sm-2 col-form-label">성</label>
  50. <div class="col-sm-10">
  51. <input type="text" asp-for="FirstName" class="form-control" maxlength="20" placeholder="최대 20자" />
  52. <span asp-validation-for="FirstName" class="text-danger"></span>
  53. </div>
  54. </div>
  55. <div class="row mb-2">
  56. <label for="LastName" class="col-sm-2 col-form-label">이름</label>
  57. <div class="col-sm-10">
  58. <input type="text" asp-for="LastName" class="form-control" maxlength="40" placeholder="최대 40자" />
  59. <span asp-validation-for="LastName" class="text-danger"></span>
  60. </div>
  61. </div>
  62. <div class="row mb-2">
  63. <label for="Intro" class="col-sm-2">자기소개</label>
  64. <div class="col-sm-10">
  65. <textarea asp-for="Intro" class="form-control" placeholder="최대 1000자" rows="2" maxlength="1000"></textarea>
  66. <span asp-validation-for="Intro" class="text-danger"></span>
  67. </div>
  68. </div>
  69. <div class="row mb-2">
  70. <label for="Summary" class="col-sm-2">한마디</label>
  71. <div class="col-sm-10">
  72. <input type="text" asp-for="Summary" class="form-control" maxlength="50" placeholder="50자 이내"/>
  73. <span asp-validation-for="Summary" class="text-danger"></span>
  74. </div>
  75. </div>
  76. <div class="row mb-2">
  77. <label for="Phone" class="col-sm-2">연락처</label>
  78. <div class="col-sm-10">
  79. <input type="text" asp-for="Phone" class="form-control" maxlength="15" placeholder="010-0000-0000 형식으로 입력하세요." pattern="010-\d{4}-\d{4}" />
  80. <span asp-validation-for="Phone" class="text-danger"></span>
  81. </div>
  82. </div>
  83. <div class="row mb-2">
  84. <label for="Gender" class="col-sm-2 col-form-label">성별</label>
  85. <div class="col-sm-10 align-content-center">
  86. <div class="form-check-inline">
  87. <input type="radio" asp-for="Gender" id="male" class="form-check-input" value="@Gender.Male" />
  88. <label class="form-check-label" for="male">남자</label>
  89. </div>
  90. <div class="form-check-inline">
  91. <input type="radio" asp-for="Gender" id="female" class="form-check-input" value="@Gender.Female" />
  92. <label class="form-check-label" for="female">여자</label>
  93. </div>
  94. <span asp-validation-for="Gender" class="text-danger"></span>
  95. </div>
  96. </div>
  97. <div class="row mb-2">
  98. <label for="Birthday" class="col-sm-2">생년월일</label>
  99. <div class="col-sm-10">
  100. <input type="date" asp-for="Birthday" class="form-control w-auto" />
  101. <span asp-validation-for="Birthday" class="text-danger"></span>
  102. </div>
  103. </div>
  104. <div class="row mb-2">
  105. <label for="Photo" class="col-sm-2 col-form-label">사진</label>
  106. <div class="col-sm-10">
  107. <div id="photoPrev" hidden><img class="img-fluid img-thumbnail" alt="사진 미리보기" /></div>
  108. <input type="file" asp-for="Photo" class="form-control" accept="image/*" />
  109. <span asp-validation-for="Photo" class="text-danger"></span>
  110. </div>
  111. </div>
  112. <div class="row mb-2">
  113. <label for="Icon" class="col-sm-2 col-form-label">아이콘</label>
  114. <div class="col-sm-10">
  115. <div id="iconPrev" hidden><img class="img-fluid img-thumbnail" alt="아이콘 미리보기" /></div>
  116. <input type="file" asp-for="Icon" class="form-control" accept="image/*" />
  117. <span asp-validation-for="Icon" class="text-danger"></span>
  118. </div>
  119. </div>
  120. <hr/>
  121. <div class="row mb-2">
  122. <label for="IsEmailVerified" class="col-sm-2 col-form-label">이메일 인증</label>
  123. <div class="col-sm-10 align-content-center">
  124. <div class="form-check-inline">
  125. <input type="checkbox" asp-for="IsEmailVerified" class="form-check-input" />
  126. <label class="form-check-label" for="IsEmailVerified">인증 했습니다.</label>
  127. <span asp-validation-for="IsEmailVerified" class="text-danger"></span>
  128. </div>
  129. </div>
  130. </div>
  131. <div class="row mb-2">
  132. <label for="IsAuthCertified" class="col-sm-2 col-form-label">본인 인증</label>
  133. <div class="col-sm-10 align-content-center">
  134. <div class="form-check-inline">
  135. <input type="checkbox" asp-for="IsAuthCertified" class="form-check-input" />
  136. <label class="form-check-label" for="IsAuthCertified">인증 했습니다.</label>
  137. <span asp-validation-for="IsAuthCertified" class="text-danger"></span>
  138. </div>
  139. </div>
  140. </div>
  141. <div class="row mb-2">
  142. <label for="IsDenied" class="col-sm-2 col-form-label">차단 여부</label>
  143. <div class="col-sm-10 align-content-center">
  144. <div class="form-check-inline">
  145. <input type="checkbox" asp-for="IsDenied" class="form-check-input" />
  146. <label class="form-check-label" for="IsDenied">차단합니다.</label>
  147. <span asp-validation-for="IsDenied" class="text-danger"></span>
  148. </div>
  149. </div>
  150. </div>
  151. <div class="row mb-2">
  152. <label for="IsAdmin" class="col-sm-2 col-form-label">관리자 여부</label>
  153. <div class="col-sm-10 align-content-center">
  154. <div class="form-check-inline">
  155. <input type="checkbox" asp-for="IsAdmin" class="form-check-input" />
  156. <label class="form-check-label" for="IsAdmin">관리자입니다.</label>
  157. <span asp-validation-for="IsAdmin" class="text-danger"></span>
  158. </div>
  159. </div>
  160. </div>
  161. <div class="row mb-2">
  162. <label for="IsWithdraw" class="col-sm-2 col-form-label">탈퇴 여부</label>
  163. <div class="col-sm-10 align-content-center">
  164. <div class="form-check-inline">
  165. <input type="checkbox" asp-for="IsWithdraw" class="form-check-input" />
  166. <label class="form-check-label" for="IsWithdraw">탈퇴했습니다.</label>
  167. <span asp-validation-for="IsWithdraw" class="text-danger"></span>
  168. </div>
  169. </div>
  170. </div>
  171. <hr/>
  172. <div class="d-grid gap-2 text-center d-md-block">
  173. <button type="submit" class="btn btn-sm btn-success">저장</button>
  174. <a asp-action="Index" class="btn btn-sm btn-secondary">취소</a>
  175. </div>
  176. <br/>
  177. </form>
  178. </div>
  179. @section Scripts {
  180. <script>
  181. setupImagePreview("Photo", "photoPrev");
  182. setupImagePreview("Icon", "iconPrev");
  183. $(document).on("submit", "#fAdminWrite", function(e) {
  184. e.preventDefault();
  185. const password = e.target.elements["Password"].value;
  186. const rePassword = e.target.elements["RePassword"].value;
  187. if (password !== rePassword) {
  188. alert("비밀번호가 일치하지 않습니다.");
  189. return false;
  190. }
  191. this.submit();
  192. });
  193. </script>
  194. }