더북(TheBook)

4. Views 폴더의 DotNetNote 폴더에 _BoardCommentControl.cshtml이라는 이름으로 뷰 페이지를 생성하고, 다음과 같이 코드를 작성한다. 게시판 상세보기에 들어가는 부분 페이지인 댓글 입출력 폼을 구현한 것이다. 댓글 입렵 폼에 대한 유효성 검사 로직은 순수 자바스크립트 코드를 사용해 구현했다.

▼  /Views/DotNetNote/_BoardCommentControl.cshtml

@model NoteCommentViewModel

<table style=“padding: 10px;margin-left:20px;margin-right:20px;width:95%;”>
@foreach (var comment in Model.NoteCommentList)
{
  <tr style=“border-bottom: 1px dotted silver;”>
      <td style=“width: 80px;”>
          @comment.Name
      </td>
      <td style=“width: 350px;”>
          @Html.Raw(comment.Opinion.Replace(”\r\n”, “<br />”))
      </td>
      <td style=“width: 180px;”>
          @comment.PostDate
      </td>
      <td style=“width: 10px;text-align:center;”>
          <a title=“댓글 삭제” href=
              ”/DotNetNote/CommentDelete?BoardId=@Model.BoardId&Id=@comment.Id”>
              <img src=”/images/dnn/icon_delete_red.gif” border=“0”>
          </a>
      </td>
  </tr>
}
</table>
<br />
<script>
  // 모델 메타데이터를 사용하지 않고, 직접 클라이언트 측 코드 사용
  function CheckCommentForm() {
      var name = document.getElementById(“txtName”);
      var pwd = document.getElementById(“txtPassword”);
      var content = document.getElementById(“txtOpinion”);
      if (name.value.length < 1 || content.value.length < 1
          || pwd.value.length < 1) {
          window.alert(“이름과 암호 그리고 의견을 입력하시오.”);
          name.focus();
          return false;
      }
      return true;
  }
</script>
<form asp-controller=“DotNetNote” asp-action=“CommentAdd” method=“post”
    onsubmit=“return CheckCommentForm();”>
  <input type=“hidden” name=“BoardId” value=”@Model.BoardId” />
  <table style=“width: 500px; margin-left: auto;”>
      <tr>
          <td style=“width: 64px; text-align:right;”>
              이 름 :
          </td>
          <td style=“width: 128px;”>
              <input type=“text” name=“txtName” id=“txtName”
                      class=“form-control”
                      style=“width:128px;display:inline-block;” />
          </td>
          <td style=“width: 64px; text-align:right;”>
              암 호 :
          </td>
          <td style=“width: 128px;”>
              <input type=“password” name=“txtPassword” id=“txtPassword”
                      class=“form-control”
                      style=“width:128px;display:inline-block;” />
          </td>
          <td style=“width: 128px; text-align:right;”>
              <input type=“submit” value=“의견남기기”
                      class=“form-control btn btn-primary”
                      style=“width:96px;display:inline-block;” />
          </td>
      </tr>
      <tr>
          <td style=“width: 64px; text-align:right;”>
              의 견 :
          </td>
          <td colspan=“4” style=“width: 448px;”>
              <textarea rows=“3” cols=“70” name=“txtOpinion” id=“txtOpinion”
                  class=“form-control”
                  style=“width:448px; display:inline-block;”></textarea>
          </td>
      </tr>
  </table>
</form>

<hr />

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.