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 />
    

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