ASP.NET

03.ASP.NET - 기본형 게시판(4) : View(상세보기) 페이지

Godffs 2009. 10. 7. 17:18
반응형
View(상세보기) :글쓴 내용 보는 페이지

View.aspx

<div>

    <h3> 보기</h3>

    제목 :<asp:Label ID="lblTitle" runat="server">

    </asp:Label><br />

 

    번호 :<asp:Label ID="lblNum" runat="server">

    </asp:Label><br />

 

    이름 :<asp:Label ID="lblName" runat="server">

    </asp:Label><br />

 

    이메일 :<asp:Label ID="lblEmail" runat="server">

    </asp:Label><br />

 

    홈페이지 :<asp:Label ID="lblHomepage" runat="server">

    </asp:Label><br />

 

    작성일 :<asp:Label ID="lblPostDate" runat="server">

    </asp:Label> <br />

 

    조회수 :<asp:Label ID="lblReadCount" runat="server">

    </asp:Label><br />

 

    IP주소 :<asp:Label ID="lblPostIP" runat="server">

    </asp:Label> <br />

    <asp:Label ID="lblContent" runat="server"></asp:Label><br />

    <asp:Button ID="btnModify" runat="server" Text="수정"

    onclick="btnModify_Click" />

 

    <asp:Button ID="btnDelete" runat="server" Text="삭제"

    onclick="btnDelete_Click" />

 

    <asp:Button ID="btnList" runat="server" Text="리스트"

    onclick="btnList_Click" />

</div>


View.aspx.cs

protected void Page_Load(object sender, EventArgs e)

{

   // 넘겨져 쿼리 스트링 검사

   if (String.IsNullOrEmpty(Request["Num"]))

   {

       Response.Write("잘못된 요청입니다.");

       Response.End(); // 현재 페이지 멈추기

   }

   else

   {

       if (!Page.IsPostBack)

       {

           // 넘겨져 번호에 해당하는 출력

           DisplayData();

       }

   }

}

 

private void DisplayData()

{

   SqlConnection con = new SqlConnection(

       ConfigurationManager.ConnectionStrings

       ["ConnectionString"].ConnectionString);

   con.Open();

 

   SqlCommand cmd = new SqlCommand("ViewBasic", con);

   cmd.CommandType = CommandType.StoredProcedure;

 

   // 파라미터 : List.aspx에서 넘겨온 쿼리스트링

   cmd.Parameters.AddWithValue("@Num", Request["Num"]);

 

   // 상세 보기 : DataReader

   SqlDataReader dr = cmd.ExecuteReader();

 

   // 바인딩 : 각각의 컨트롤

   while (dr.Read())

   {

       this.lblNum.Text = dr["Num"].ToString();

       this.lblName.Text = dr["Name"].ToString();

       this.lblEmail.Text = dr["Email"].ToString();

       this.lblHomepage.Text = dr["Homepage"].ToString();

       this.lblTitle.Text = dr["Title"].ToString();

       this.lblPostDate.Text = dr["PostDate"].ToString();

       // 인코딩에 따른 Content 출력 3가지 방법

       // Write.aspx페이지에서 <%page 부분에 ValidateRequest="false" 추가

       string encoding = dr["Encoding"].ToString(); // Text/HTml/Mixed

       if (encoding == "Text") // 입력한 모양 그대로 출력

       {

           this.lblContent.Text = dr["Content"].ToString()

               .Replace("&", "&amp;").Replace("<", "&lt;")

               .Replace(">", "&gt;")

               .Replace("\t", "&nbsp;&nbsp;&nbsp;&nbsp;")

               .Replace("\r\n", "<br />");

       }

 

       else if (encoding == "Mixed") // 태그는 실행하되, 엔터는 처리

       {

           this.lblContent.Text = dr["Content"].ToString()

               .Replace("\r\n", "<br />");

       }

 

       else // HTML 변환해서 출력

       {

           this.lblContent.Text = dr["Content"].ToString();

       }

 

       this.lblContent.Text = dr["Content"].ToString();

      

       this.lblReadCount.Text = dr["ReadCount"].ToString();

       this.lblPostIP.Text = dr["PostIP"].ToString();

   }

   dr.Close();

   con.Close();

}

 

protected void btnModify_Click(object sender, EventArgs e)

{

   // 수정 페이지로 현재 글의 번호 넘김

   string strUrl = String.Empty;

   strUrl = "./Modify.aspx?Num=" + Request["Num"];

   Response.Redirect(strUrl);

}

 

protected void btnDelete_Click(object sender, EventArgs e)

{

   // 삭제 페이지로 현재 글의 번호 넘김

   Response.Redirect(String.Format(

       "./Delete.aspx?Num={0}", Request["Num"]));

}

 

protected void btnList_Click(object sender, EventArgs e)

{

   // 리스트 페이지로 이동

   Response.Redirect("./List.aspx");

}


결과화면

[그림3-1]



반응형