블로그 이미지
Magic_kit
study 관련자료를 한곳으로 자기 개발 목적으로 재태크 재무 관리 목적으로 일상생활의 팁을 공유 하기 위하여 블로그를 개설 하였습니다.

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Category

Recent Post

Recent Comment

Archive

2009. 11. 2. 14:21 .Net Project/ASP.NET 3.5 Sp1
반응형
 View.aspx

 



<!-- BoardView.aspx -->
<%@ Page Language="C#" AutoEventWireup="true"
    CodeFile="BoardView.aspx.cs"
    Inherits="DotNetNote_BoardView" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  <title>상세 보기</title>
  <link href="../DotNetNote/DotNetNote.css"
    rel="stylesheet" type="text/css" />
</head>
<body>
  <form id="form1" runat="server">
    <div>
      <h3>완성형 게시판</h3>
      <font style="font-size: 9pt; color: #ff0000">
        글 보기 - 현재 글에 대해서 수정 및 삭제를 할 수
        있습니다. </font>
      <hr width="100%" size="1" />
      <table id="Table2" style="width: 740px;
        border-collapse: collapse; height: 352px"
        bordercolor="black" cellspacing="0"
        rules="none" width="740" align="center"
        bgcolor="white">
        <tbody>
          <tr style="color: white" bgcolor="#46698c"
            height="23">
            <td align="right" height="35">
              <b style="font-size: 18px">제&nbsp;&nbsp;
                목</b> :
            </td>
            <td width="640">
              <asp:Label ID="lblTitle" Font-Bold="True"
                Font-Size="18px" Width="100%"
                runat="server"></asp:Label></td>
          </tr>
          <tr bgcolor="#efefef">
            <td align="right">
              번&nbsp; 호 :
            </td>
            <td width="500">
              <asp:Label ID="lblNum" Width="84"
                runat="server"></asp:Label></td>
          </tr>
          <tr bgcolor="#efefef">
            <td align="right">
              이&nbsp; 름 :
            </td>
            <td width="500">
              <asp:Label ID="lblName" Width="100%"
                runat="server"></asp:Label></td>
          </tr>
          <tr bgcolor="#efefef">
            <td align="right">
              E-mail :
            </td>
            <td>
              <asp:Label ID="lblEmail" Width="100%"
                runat="server"></asp:Label></td>
          </tr>
          <tr bgcolor="#efefef">
            <td align="right">
              Homepage :
            </td>
            <td>
              <asp:Label ID="lblHomepage" Width="100%"
                runat="server"></asp:Label></td>
          </tr>
          <tr bgcolor="#efefef">
            <td align="right">
              작성일 :
            </td>
            <td>
              <asp:Label ID="lblPostDate" Width="100%"
                runat="server"></asp:Label></td>
          </tr>
          <tr bgcolor="#efefef">
            <td align="right">
              조회수 :
            </td>
            <td>
              <asp:Label ID="lblReadCount" Width="100%"
                runat="server"></asp:Label></td>
          </tr>
          <tr bgcolor="#efefef">
            <td align="right">
              IP 주소 :
            </td>
            <td>
              <asp:Label ID="lblPostIP" Width="100%"
                runat="server"></asp:Label></td>
          </tr>
          <tr bgcolor="#efefef">
            <td align="right">
              파일 :
            </td>
            <td>
              <asp:Label ID="lblFile" Width="100%"
                runat="server"></asp:Label></td>
          </tr>
          <tr>
            <td align="left" colspan="2" style="padding-right: 20px;
              padding-left: 20px; padding-bottom: 20px;
              padding-top: 20px">
              <asp:Literal ID="ltrImage" runat="server">
              </asp:Literal>
              <asp:Label ID="lblContent" runat="server"
                Width="100%" Height="115px"></asp:Label>
                <font face="굴림"><br />
                  <asp:Label ID="lblComment" runat="server"
                    Width="100%"></asp:Label></font>
            </td>
          </tr>
        </tbody>
      </table>
      <p align="center">
        <asp:Button ID="btnReply" runat="server"
          Width="51px" Height="19px" Text="답변"
          BorderStyle="Solid" BorderWidth="1px"
          BorderColor="Gray" OnClick="btnReply_Click">
        </asp:Button>&nbsp;&nbsp;<asp:Button
          ID="btnDelete" runat="server"
          Width="51" Height="19" Text="삭제"
          BorderStyle="Solid" BorderWidth="1px"
          BorderColor="Gray" CausesValidation="False"
          OnClick="btnDelete_Click"></asp:Button>&nbsp;&nbsp;
        <asp:Button ID="btnEdit" runat="server"
          Width="50px" Text="수정" BorderStyle="Solid"
          BorderWidth="1px" BorderColor="Gray"
          CausesValidation="False" OnClick="btnEdit_Click">
        </asp:Button><font face="굴림">&nbsp;&nbsp;&nbsp;
        </font>
        <asp:Button ID="btnList" runat="server"
          Width="50px" Text="목록보기" BorderStyle="Groove"
          BorderWidth="1px" BorderColor="Gray"
          CausesValidation="False" OnClick="btnList_Click">
        </asp:Button></p>
      <p align="center">
        <asp:Label ID="lblError" runat="server" ForeColor="Red"
          EnableViewState="False"></asp:Label></p>
    </div>
  </form>
</body>
</html>


 View.aspx.Cs

 using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.IO;

/// <summary>
/// BoardView : 완성형(DotNetNote) 게시판의 상세 페이지
/// </summary>
public partial class DotNetNote_BoardView : System.Web.UI.Page
{
  #region Private Member Variables
  private string strNum;//앞(리스트)에서 넘겨져 온 번호 저장
  #endregion

  #region Event Handlers
  //페이지 로드될 때 글 번호 받기
  protected void Page_Load(object sender, System.EventArgs e)
  {
    strNum = Request.QueryString["Num"];
    if (strNum == null)
    {
      Response.Redirect("./BoardList.aspx");
    }
    if (!this.IsPostBack)
    {
      ReadData();//넘겨져 온 번호에 해당하는 글만 읽어서 각 레이블에 출력
    }
  }

  // 삭제 페이지로 이동
  protected void btnDelete_Click(object sender, System.EventArgs e)
  {
    Response.Redirect("./BoardDelete.aspx?Num=" + strNum);
  }

  // 수정 페이지로 이동
  protected void btnEdit_Click(object sender, System.EventArgs e)
  {
    Response.Redirect("./BoardModify.aspx?Num=" + strNum);
  }

  // 리스트 페이지로 이동
  protected void btnList_Click(object sender, System.EventArgs e)
  {
    if (!String.IsNullOrEmpty(Request["SearchField"]) &&
      !String.IsNullOrEmpty(Request["SearchQuery"]))
    {
      Response.Redirect("BoardSearch.aspx?SearchField="
        + Request["SearchField"] + "&SearchQuery="
        + Request["SearchQuery"]);
    }
    Response.Redirect("./BoardList.aspx");
  }

  // 답변 페이지로 이동
  protected void btnReply_Click(object sender, System.EventArgs e)
  {
    Response.Redirect("BoardReply.aspx?Num=" + strNum);
  }
  #endregion

  #region Private Methods
  private void ReadData()
  {
    SqlConnection objCon = new SqlConnection();
    objCon.ConnectionString =
      ConfigurationManager.ConnectionStrings[
        "ConnectionString"].ConnectionString;
    objCon.Open();

    SqlCommand objCmd = new SqlCommand();
    objCmd.Connection = objCon;
    objCmd.CommandText = "ViewDotNetNote";
    objCmd.CommandType = CommandType.StoredProcedure;
    objCmd.Parameters.Add("@Num", SqlDbType.Int).Value = strNum;

    SqlDataReader objDr = objCmd.ExecuteReader();
    if (objDr.Read())
    {
      lblNum.Text = strNum;//번호
      lblName.Text = objDr["Name"].ToString();//이름
      lblEmail.Text =
        String.Format(
          "<a href='mailto:{0}'>{1}</a>",
          objDr["Email"].ToString(),
          objDr["Email"].ToString()
        );
      lblTitle.Text = objDr["Title"].ToString();
      string strContent = objDr["Content"].ToString();

      // 인코딩 방식에 따른 데이터 출력
      string strEncoding = objDr["Encoding"].ToString();
      if (strEncoding == "Text") // Text : 소스 그대로 표현
      {
        lblContent.Text =
          strContent.Replace("&", "&amp;").Replace(
            "<", "&lt;").Replace(">", "&gt;").Replace(
              "\r\n", "<br />");
      }
      else if (strEncoding == "Mixed") // Mixed : 엔터처리만
      {
        lblContent.Text =
          strContent.Replace("\r\n", "<br />");
      }
      else // HTML : HTML 형식으로 출력
      {
        lblContent.Text = strContent; // 변환없음
      }

      lblReadCount.Text = objDr["ReadCount"].ToString();
      lblHomepage.Text =
        String.Format(
          "<a href='{0}' target='_blank'>{1}</a>",
          objDr["Homepage"].ToString(),
          objDr["Homepage"].ToString()
        );
      lblPostDate.Text = objDr["PostDate"].ToString();
      lblPostIP.Text = objDr["PostIP"].ToString();
      if (objDr["FileName"].ToString().Length > 1)
      {
        lblFile.Text =
          String.Format("<a href='./BoardDown.aspx?Num={0}'>"
            + "{1}{2} / 전송수: {3}</a>",
            objDr["Num"].ToString(),
            "<img src='images/ext_zip.gif' border='0'>",
            objDr["FileName"].ToString(),
            objDr["DownCount"].ToString()
          );
        if (RedPlus.Library.Board.IsPhoto(
          objDr["FileName"].ToString()))
        {
          ltrImage.Text =
            String.Format(
              "<img src='ImageDown.aspx?FileName={0}'>",
              Server.UrlEncode(objDr["FileName"].ToString())
            );
        }
      }
      else
      {
        lblFile.Text = "(업로드된 파일이 없습니다.)";
      }
    }

    objDr.Close();
    objCon.Close();
  }
  #endregion
}



반응형
posted by Magic_kit
2009. 11. 2. 14:13 .Net Project/ASP.NET 3.5 Sp1
반응형
 List.aspx



 
<!-- BoardList.aspx -->
<%@ Page Language="C#" AutoEventWireup="true"
         CodeFile="BoardList.aspx.cs"
         Inherits="DotNetNote_BoardList" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  <title>글 목록</title>
  <link href="../DotNetNote/DotNetNote.css"
    rel="stylesheet" type="text/css" />
</head>
<body>
  <form id="form1" runat="server">
    <div>
      <h3>완성형 게시판</h3>
      <font face="굴림"><font style="font-size: 9pt;
        color: #ff0000">글&nbsp;목록 -&nbsp;완성형
        게시판입니다.</font>
        <hr width="100%" size="1" />
        <p align="center">
      </font>
      <div align="center">
        <table border="0" cellpadding="0"
          cellspacing="0">
          <tr>
            <td>
              <asp:GridView ID="ctlBoardList"
                runat="server" AutoGenerateColumns="False"
                CellPadding="4" ForeColor="#333333"
                GridLines="None" OnRowCreated="ctlBoardList_RowCreated"
                AllowPaging="True" DataKeyNames="Num"
                OnPageIndexChanging="ctlBoardList_PageIndexChanging"
                PageSize="10">
                <FooterStyle BackColor="#5D7B9D"
                  Font-Bold="True" ForeColor="White" />
                <Columns>
                  <asp:TemplateField HeaderText="번호">
                    <ItemTemplate>
                      <%#intTotalCount - ((Container.DataItemIndex))%>
                    </ItemTemplate>
                    <HeaderStyle HorizontalAlign="Center"
                      Width="30px" />
                  </asp:TemplateField>
                  <asp:TemplateField HeaderText="제 목">
                    <ItemTemplate>
                      <%#FuncStep(Eval("Step"))%>
                      <asp:HyperLink ID="linkTitle" runat="server"
                        NavigateUrl='<%#FuncLink(Eval("Num"))%>'
                        Text='<%#FuncCutString(Eval("Title"), 30)%>'>
                      </asp:HyperLink>
                      <%#FuncNew(Eval("PostDate"))%>
                    </ItemTemplate>
                    <HeaderStyle Width="350px" />
                  </asp:TemplateField>
                  <asp:TemplateField HeaderText="파일">
                    <ItemTemplate>
                      <%#FuncFileDown(Convert.ToInt32(
                        Eval("Num").ToString())
                    , Eval("FileName").ToString()
                    , Eval("FileSize").ToString())%>
                    </ItemTemplate>
                    <ItemStyle HorizontalAlign="Center" />
                    <HeaderStyle HorizontalAlign="Center" />
                  </asp:TemplateField>
                  <asp:BoundField DataField="Name"
                    HeaderText="작성자">
                    <HeaderStyle HorizontalAlign="Center"
                      Width="60px" />
                  </asp:BoundField>
                  <asp:BoundField DataField="PostDate"
                    HeaderText="작성일" DataFormatString="{0:yyyy-MM-dd}"
                    HtmlEncode="False">
                    <HeaderStyle HorizontalAlign="Center"
                      Width="70px" />
                  </asp:BoundField>
                  <asp:BoundField DataField="ReadCount"
                    HeaderText="조회수">
                    <ItemStyle HorizontalAlign="Right" />
                    <HeaderStyle HorizontalAlign="Center"
                      Width="50px" />
                  </asp:BoundField>
                </Columns>
                <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
                <EditRowStyle BackColor="#999999" />
                <SelectedRowStyle BackColor="#E2DED6"
                  Font-Bold="True" ForeColor="#333333" />
                <PagerStyle BackColor="#8080FF"
                  ForeColor="White" HorizontalAlign="Center" />
                <HeaderStyle BackColor="#5D7B9D"
                  Font-Bold="True" ForeColor="White" />
                <AlternatingRowStyle BackColor="White"
                  ForeColor="#284775" />
                <PagerSettings Mode="NumericFirstLast" />
              </asp:GridView>
            </td>
          </tr>
          <tr>
            <td>
              <table border="0" width="100%"
                cellpadding="3" cellspacing="0">
                <tr>
                  <td width="25%">&nbsp;</td>
                  <td width="50%" align="center">
                    <font face="굴림"></font>
                  </td>
                  <td width="25%" align="right">
                    <asp:Button ID="btnWrite" runat="server"
                      BorderStyle="Groove" BorderWidth="1px"
                      BorderColor="#404040" Text="글쓰기"
                      CausesValidation="False"
                      OnClick="btnWrite_Click">
                    </asp:Button>
                  </td>
                </tr>
              </table>
            </td>
          </tr>
        </table>
      </div>
      <p align="center">
        <asp:DropDownList ID="SearchField"
          runat="server">
          <asp:ListItem Value="Name">이름</asp:ListItem>
          <asp:ListItem Value="Title">제목</asp:ListItem>
          <asp:ListItem Value="Content">내용</asp:ListItem>
        </asp:DropDownList>&nbsp;
        <asp:TextBox ID="SearchQuery" runat="server"
          BorderStyle="Solid" BorderWidth="1px"
          Height="21px" Width="200px"></asp:TextBox>&nbsp;
        <asp:Button ID="btnSearch" runat="server"
          BorderStyle="Solid" BorderWidth="1px"
          Text="검 색" OnClick="btnSearch_Click">
        </asp:Button></p>
      <asp:RequiredFieldValidator ID="RequiredFieldValidator1"
        runat="server" ControlToValidate="SearchField"
        Display="None" ErrorMessage="검색할 단어를 입력하세요.">
      </asp:RequiredFieldValidator>
      <asp:ValidationSummary ID="ValidationSummary1"
        runat="server" ShowSummary="False"
        ShowMessageBox="True"></asp:ValidationSummary>
    </div>
  </form>
</body>
</html>


 List.aspx.Cs

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.IO;

/// <summary>
/// BoardList : 완성형(DotNetNote) 게시판의 리스트 페이지
/// </summary>
public partial class DotNetNote_BoardList : System.Web.UI.Page
{
  #region Private/Protected/Public Member Variables
  public int intPage = 0; // 현재 보여줄 페이지 번호
  public int intTotalCount = 0;//총 레코드 갯수(글번호 순서 정렬용)
  #endregion

  #region Event Handlers
  protected void Page_Load(object sender, System.EventArgs e)
  {
    //쿠키를 사용한 리스트 페이지 번호 유지 적용
    if (Request.Cookies["DotNetNote"] != null)
    {
      if (!String.IsNullOrEmpty(
        Request.Cookies["DotNetNote"]["PageNum"]))
      {
        intPage = Convert.ToInt32(
          Request.Cookies["DotNetNote"]["PageNum"]);
      }
      else
      {
        intPage = 0;
      }
      this.ctlBoardList.PageIndex = intPage;
    }

    intTotalCount = GetTotalRecordCount();//DotNetNote테이블의 총 데이터 수

    if (!Page.IsPostBack)
    {
      ReadData();
    }
  }

  #region 글쓰기 페이지로 이동
  protected void btnWrite_Click(object sender, System.EventArgs e)
  {
    Response.Redirect("./BoardWrite.aspx");
  }
  #endregion

  #region 검색 처리 링크
  protected void btnSearch_Click(object sender, System.EventArgs e)
  {
    string strQuery =
      String.Format(
      "./BoardSearch.aspx?SearchField={0}&SearchQuery={1}",
      SearchField.SelectedItem.Value,
      SearchQuery.Text
      );
    Response.Redirect(strQuery);
  }
  #endregion

  #region 마우스 오버 효과
  protected void ctlBoardList_RowCreated(
    object sender, GridViewRowEventArgs e)
  {
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
      e.Row.Attributes["onmouseover"] =
        "this.style.backgroundColor ='#FFE9BB'";
      e.Row.Attributes["onmouseout"] =
        "this.style.backgroundColor=''";
    }
  }
  #endregion

  #region 페이지 이동 링크 기능 구현
  protected void ctlBoardList_PageIndexChanging(
object sender, GridViewPageEventArgs e)
  {
    intPage = e.NewPageIndex;
    ctlBoardList.PageIndex = e.NewPageIndex;
    Response.Cookies["DotNetNote"]["PageNum"] =
      intPage.ToString();//페이지 번호 유지
    ReadData();
  }
  #endregion
  #endregion

  #region Public Methods
  #region 현재 게시판 테이블의 레코드의 수를 반환하는 메서드
  private int GetTotalRecordCount()
  {
    SqlConnection objCon = new SqlConnection();
    objCon.ConnectionString =
      ConfigurationManager.ConnectionStrings[
        "ConnectionString"].ConnectionString;
    objCon.Open();

    SqlCommand objCmd = new SqlCommand();
    objCmd.Connection = objCon;
    objCmd.CommandText = "GetCountDotNetNote";
    objCmd.CommandType = CommandType.StoredProcedure;
    int totalCount = (int)objCmd.ExecuteScalar();
    objCon.Close();

    return totalCount;
  }
  #endregion

  #region 출력상세 페이지 이동 링크
  public string FuncLink(object objNum)
  {
    return String.Format(
      "BoardView.aspx?Num={0}", objNum.ToString());
  }
  #endregion

  #region 각 글의 Step별 들여쓰기 처리
  public string FuncStep(object objStep)
  {
    int intStep = Convert.ToInt32(objStep);
    string strTemp = String.Empty;
    if (intStep == 0)
    {
      strTemp = String.Empty;
    }
    else
    {
      for (int i = 0; i < intStep; i++)
      {
        strTemp =
          String.Format(
          "<img src={0} height={1} width={2}>",
          "images/blank.gif",
          "0",
          (intStep * 15)
          );
      }
      strTemp += "<img src='images/re.gif'>";
    }
    return strTemp;
  }
  #endregion

  #region 제목 길이 자르기
  public static string FuncCutString(
    object strTitle, int intMax)
  {
    return RedPlus.Library.Board.CutString(
      strTitle.ToString(), intMax);
  }
  #endregion

  #region 파일 다운로드 기능
  public string FuncFileDown(
    int intNum, string strFileName, string strFileSize)
  {
    if (strFileName.Length > 0)
    {
      return "<a href='BoardDown.aspx?Num=" + intNum.ToString()
        + "'>" + RedPlus.Library.Board.DownloadType(
          strFileName, strFileName + "("
            + RedPlus.Library.Board.ConvertToFileSize(
              Convert.ToInt32(strFileSize)) + ")") + "</a>";
    }
    else
    {
      return "-";
    }
  }
  #endregion
 
  #region 24시간내에 올라온 글 new 이미지 표시하기
  public string FuncNew(object strDate)
  {
    DateTime originDate = Convert.ToDateTime(strDate);

    TimeSpan objTs = DateTime.Now - originDate;
    Literal l = new Literal();
    if (objTs.TotalMinutes < 1440)
    {
      l.Text = "<img src=images/new.gif>";
    }
    return l.Text;
  }
  #endregion

  #region 현재 페이지에 해당하는 데이터 읽어서 그리드뷰에 출력
  private void ReadData()
  {
    SqlConnection objCon = new SqlConnection(
      ConfigurationManager.ConnectionStrings[
        "ConnectionString"].ConnectionString);
    objCon.Open();

    SqlCommand objCmd = new SqlCommand("ListDotNetNote", objCon);
    objCmd.CommandType = CommandType.StoredProcedure;

    SqlDataAdapter objDa = new SqlDataAdapter();
    objDa.SelectCommand = objCmd;

    DataSet objDs = new DataSet();
    objDa.Fill(objDs, "DotNetNote");

    this.ctlBoardList.DataSource =
      objDs.Tables["DotNetNote"].DefaultView;
    this.ctlBoardList.DataBind();
  }

  #endregion
  #endregion
}






반응형
posted by Magic_kit
2009. 11. 2. 14:13 .Net Project/ASP.NET 3.5 Sp1
반응형
 입력 Write.aspx
 



<!-- BoardWirte.aspx -->

 

<%@ Page Language="C#" AutoEventWireup="true"

  CodeFile="BoardWrite.aspx.cs"

  Inherits="DotNetNote_BoardWrite" %>

 

<%@ Register Assembly="FreeTextBox"

  Namespace="FreeTextBoxControls"

  TagPrefix="FTB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

  <title>글 입력</title>

  <link href="../DotNetNote/DotNetNote.css"

    rel="stylesheet" type="text/css" />

</head>

<body>

  <form id="form1" runat="server">

    <div>

      <h3>완성형 게시판</h3>

      <font style="font-size: 9pt; color: #ff0000">

        글 쓰기 - 다음 필드들을 채워주세요.</font>

      <hr width="100%" size="1" />

      <table id="Table1" style="border-collapse: collapse"

        bordercolor="black" cellspacing="0"

        rules="none" width="600" align="center"

        bgcolor="white">

        <tr>

          <td width="100"

            bgcolor="#efefef" align="right">

              <font color="#ff0000">*</font>&nbsp;

          </td>

          <td width="500">

            <asp:TextBox ID="txtName" runat="server"

              BorderWidth="1px" BorderStyle="Solid"

              MaxLength="10" Width="150px"></asp:TextBox>

            <asp:RequiredFieldValidator ID="valName"

              runat="server" ErrorMessage="* 이름을 작성해 주세요."

              ControlToValidate="txtName" Display="None"

              SetFocusOnError="True"></asp:RequiredFieldValidator>

          </td>

        </tr>

        <tr>

          <td bgcolor="#efefef" align="right">

              E-mail

          </td>

          <td>

            <asp:TextBox ID="txtEmail" runat="server"

              BorderWidth="1px" BorderStyle="Solid"

              MaxLength="80" Width="200px"></asp:TextBox>

            <font style="font-size: 9pt" color="#aaaaaa">

              <i>(Optional)</i></font>

            <asp:RegularExpressionValidator

              ID="valEmail" runat="server"

              ErrorMessage="* 메일형식이 올바르지 않습니다"

              ControlToValidate="txtEmail"

              Display="None" ValidationExpression=

                "\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"

              SetFocusOnError="True"></asp:RegularExpressionValidator>

          </td>

        </tr>

        <tr>

          <td bgcolor="#efefef" align="right">

              Homepage

          </td>

          <td>

            <asp:TextBox ID="txtHomepage" runat="server"

              BorderWidth="1px" BorderStyle="Solid"

              MaxLength="80" Width="300px"></asp:TextBox>

              <font style="font-size: 9pt" color="#aaaaaa">

                <i>(Optional)</i>

              </font>

            <asp:RegularExpressionValidator

              ID="valHomepage" runat="server"

              ErrorMessage="* 홈페이지를 정확히 작성해주세요."

              ControlToValidate="txtHomepage"

              Display="None" ValidationExpression=

                "http://([\w-]+\.)+[\w-]+(/[\w- ./?%&amp;=]*)?"

              SetFocusOnError="True">

            </asp:RegularExpressionValidator>

          </td>

        </tr>

        <tr>

          <td align="right" bgcolor="#efefef">

              <font color="#ff0000">*</font>&nbsp;

          </td>

          <td>

            <asp:TextBox ID="txtTitle" runat="server"

              BorderWidth="1px" BorderStyle="Solid"

              MaxLength="30" Width="480px"></asp:TextBox><font

                face="굴림">&nbsp;</font>

            <asp:RequiredFieldValidator ID="valTitle"

              runat="server" ErrorMessage="* 제목을 기입해 주세요"

              ControlToValidate="txtTitle"

              Display="None" SetFocusOnError="True">

            </asp:RequiredFieldValidator>

          </td>

        </tr>

        <tr>

          <td align="right" bgcolor="#efefef">

            <font color="#ff0000">*</font>&nbsp;

          </td>

          <td>

            <FTB:FreeTextBox ID="txtContent"

              runat="server" Height="200px"

              Language="ko-KR" StartMode="HtmlMode"

              Width="480px">

            </FTB:FreeTextBox>

            <br />

            <asp:RequiredFieldValidator ID="valContent"

              runat="server" ErrorMessage="* 내용을 기입해 주세요"

              ControlToValidate="txtContent"

              Display="None" SetFocusOnError="True">

            </asp:RequiredFieldValidator>

          </td>

        </tr>

        <tr>

          <td align="right" bgcolor="#efefef">

              파일첨부

          </td>

          <td>

            <asp:CheckBox ID="chkUpload" runat="server"

              Text="이 체크박스를 선택하면 업로드 화면이 나타납니다."

              AutoPostBack="True"

              OnCheckedChanged="chkUpload_CheckedChanged">

            </asp:CheckBox><font style="font-size: 9pt"

              color="#aaaaaa"><i>(Optional)</i></font><br />

            <asp:Panel ID="pnlFile" runat="server"

              Width="240px" Visible="False"

              Height="21px">

              <input id="txtFileName" style="width: 290px;

                height: 19px" type="file" size="29"

                name="File1" runat="server">

            </asp:Panel>

          </td>

        </tr>

        <tr>

          <td align="right" bgcolor="#efefef">

              <font color="#ff0000">*</font>인코딩

          </td>

          <td>

            <asp:RadioButtonList ID="rdoEncoding"

              runat="server" RepeatDirection="Horizontal">

              <asp:ListItem Value="Text" Selected="True">Text</asp:ListItem>

              <asp:ListItem Value="HTML">HTML</asp:ListItem>

              <asp:ListItem Value="Mixed">Mixed</asp:ListItem>

            </asp:RadioButtonList>

          </td>

        </tr>

        <tr>

          <td align="right" bgcolor="#efefef" style="height: 22px">

              <font color="#ff0000">*</font>비밀번호

          </td>

          <td style="height: 22px">

            <asp:TextBox ID="txtPassword" runat="server"

              BorderWidth="1px" BorderStyle="Solid"

              MaxLength="20" Width="150px" TextMode="Password"

              EnableViewState="False"></asp:TextBox>

            <font style="font-size: 9pt" color="#aaaaaa">

              (수정/삭제시에 필요)</font>&nbsp;

            <asp:RequiredFieldValidator ID="valPassword"

              runat="server" ErrorMessage="* 비밀번호를 기입해 주세요"

              ControlToValidate="txtPassword"

              Display="None" SetFocusOnError="True">

            </asp:RequiredFieldValidator>

          </td>

        </tr>

      </table>

      <p align="center">

        <asp:Button ID="btnWrite" runat="server"

          BorderWidth="1px" BorderStyle="Groove"

          Width="80px" BorderColor="#404040"

          Text="저장" OnClick="btnWrite_Click">

        </asp:Button><font face="굴림">&nbsp;</font><font

          face="굴림">&nbsp;</font><asp:Button

            ID="btnList" runat="server" BorderWidth="1px"

            BorderStyle="Groove" Width="80px"

            BorderColor="#404040" Text="리스트"

            CausesValidation="False" OnClick="btnList_Click">

          </asp:Button>

        <asp:ValidationSummary ID="valSummary"

          runat="server" ShowSummary="False"

          ShowMessageBox="True" DisplayMode="List">

        </asp:ValidationSummary>

      </p>

    </div>

  </form>

</body>

</html>


 입력 Write.aspx.CS

using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.IO;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// <summary>
/// BoardWrite : 완성형 게시판 데이터 입력 페이지
/// </summary>

public partial class DotNetNote_BoardWrite : System.Web.UI.Page
{
  #region Private Member Variables
  private string strBaseDir = String.Empty;//파일 업로드 폴더
  private string strFileName = String.Empty;//파일명 저장 필드
  private int intFileSize = 0;//파일크기 저장 필드
  #endregion

  #region Event Handlers
  // 페이지 로드 이벤트 핸들러
  protected void Page_Load(object sender, System.EventArgs e)
  {
    // Empty
  }

  //파일 업로드 및 글쓰기 저장 로직
  protected void btnWrite_Click(object sender, System.EventArgs e)
  {
    SqlConnection objCon = new SqlConnection();
    objCon.ConnectionString =
      ConfigurationManager.ConnectionStrings[
        "ConnectionString"].ConnectionString;
    objCon.Open();

    string strName = txtName.Text.Replace("&", "&amp;").Replace(
      "<", "&lt;").Replace(">", "&gt;");
    string strTitle = txtTitle.Text.Replace("&", "&amp;").Replace(
      "<", "&lt;").Replace(">", "&gt;");

    //파일 업로드 처리 시작
    strBaseDir = Server.MapPath("./MyFiles");
    strFileName = String.Empty;
    intFileSize = 0;
    if (txtFileName.PostedFile != null)
    {
      if (txtFileName.PostedFile.FileName.Trim().Length > 0 &&
        txtFileName.PostedFile.ContentLength > 0)
      {
        strFileName = // 파일명 중복처리
          GetFilePath(strBaseDir,
            Path.GetFileName(txtFileName.PostedFile.FileName));
        intFileSize = txtFileName.PostedFile.ContentLength;
        //업로드 처리 : SaveAs()
        txtFileName.PostedFile.SaveAs(
          Path.Combine(strBaseDir, strFileName));
      }
    }//파일 업로드 처리 끝

    SqlCommand objCmd = new SqlCommand();
    objCmd.Connection = objCon;

    objCmd.CommandText = "Select Max(Ref) As MaxRef From DotNetNote";
    objCmd.CommandType = CommandType.Text;
    SqlDataReader objDr = objCmd.ExecuteReader();

    //BoardWrite.aspx에서 기본게시판과 달리
    //답변형 게시판은 Ref필드만 값을 추가하면 된다.

    int intMaxRef = 0;
    if (objDr.Read())
    {
      intMaxRef = (objDr.IsDBNull(0) ? 0 : objDr.GetInt32(0));
    }
    objDr.Close();

    objCmd.Connection.Close();//일단 연결 해제.
    objCmd.Connection.Open();//다시 연결

    objCmd.CommandText = "WriteDotNetNote";

    objCmd.Parameters.Add(
      "@Name", SqlDbType.VarChar, 25).Value = txtName.Text;
    objCmd.Parameters.Add(
      "@Email", SqlDbType.VarChar, 100).Value = txtEmail.Text;
    objCmd.Parameters.Add(
      "@Title", SqlDbType.VarChar, 150).Value = txtTitle.Text;
    objCmd.Parameters.AddWithValue(
      "@PostIP", Request.UserHostAddress);
    // 복습 차원에서 FreeTextBox 컨트롤 사용
    objCmd.Parameters.Add("@Content", SqlDbType.Text).Value =
      txtContent.Text;
    objCmd.Parameters.Add("@Password", SqlDbType.VarChar, 20).Value =
      txtPassword.Text;
    objCmd.Parameters.Add("@Encoding", SqlDbType.VarChar, 10).Value =
      rdoEncoding.SelectedItem.Text;
    objCmd.Parameters.Add("@Homepage", SqlDbType.VarChar, 100).Value =
      txtHomepage.Text;
    objCmd.Parameters.AddWithValue(
      "@Ref", intMaxRef + 1);//Ref : 참조글 번호
    objCmd.Parameters.Add(
      "@FileName", SqlDbType.VarChar, 255).Value = strFileName; ;
    objCmd.Parameters.Add(
      "@FileSize", SqlDbType.Int).Value = intFileSize;

    objCmd.CommandType = CommandType.StoredProcedure;
    objCmd.ExecuteNonQuery();

    objCon.Close();
    Response.Redirect("./BoardList.aspx");
  }

  //리스트 페이지로 이동 버튼
  protected void btnList_Click(object sender, System.EventArgs e)
  {
    Response.Redirect("./BoardList.aspx");
  }

  //파일 첨부 레이어 보이기/감추기
  protected void chkUpload_CheckedChanged(
    object sender, System.EventArgs e)
  {
    if (chkUpload.Checked)
    {
      pnlFile.Visible = true;
    }
    else
    {
      pnlFile.Visible = false;
    }
  }

  #endregion

  #region Public Methods
  #region 중복된 파일명 뒤에 번호 붙이는 메서드
  /// <summary>
  /// GetFilePath : 파일명 뒤에 번호 붙이는 메서드
  /// </summary>
  /// <param name="strBaseDirTemp">경로(c:\MyFiles)</param>
  /// <param name="strFileNameTemp">Test.txt</param>
  /// <returns>Test(1).txt</returns>
  private string GetFilePath(
    string strBaseDirTemp, string strFileNameTemp)
  {
  string strName = //순수파일명 : Test
   Path.GetFileNameWithoutExtension(strFileNameTemp);
  string strExt =  //확장자 : .txt
   Path.GetExtension(strFileNameTemp);
    bool blnExists = true;
    int i = 0;
    while (blnExists)
    {
      if (File.Exists(
        Path.Combine(strBaseDirTemp, strFileNameTemp)))
      {//Path.Combine(경로, 파일명) = 경로+파일명
        i++;
        strFileNameTemp =
          strName + "(" + i + ")" + strExt;//Test(3).txt
      }
      else
      {
        blnExists = false;
      }
    }
    return strFileNameTemp;
  }
  #endregion
  #endregion
}








반응형
posted by Magic_kit
2009. 10. 30. 10:15 .Net Project/ASP.NET 3.5 Sp1
반응형

  ASP.NET의 주요 명령어 정리
 ASP.NET의 주요 명령어 정리 : 내장 개체

▶ Response개체 : 응답(서버(C#)에서 클라이언트(IE)로)
     .Write() : 페이지에 문자열 출력
     .Redirect() : 해당 페이지로 이동
     .Expires : 현재 페이지의 새로 고침 기능
          Response.Expires = -1; // 응답캐시 지우기
     .Buffer : 버퍼링 사용 설정
          Response.Buffer = true; // 버퍼링
     .Flush() : 현재 버퍼 내용 출력
     .Clear() : 현재 버퍼의 내용 비우기
     .End() : 현재 페이지 종료...
     .WriteFile() : 파일 출력
     .Cookies[] : 쿠키 저장
     
▶ Request개체
     .QueryString[] : 넘겨져 온 쿼리스트링값을 반환 : key/value쌍으로…
          Get방식 : URI(URL)에 ? 뒤에 키와 값으로 전달
     .Form[] : Post방식으로 넘겨져 온 값 반환
          Post방식 : HTTP 헤더에 데이터를 실어서 전송
     .Params[] : Get/Post 방식 중 아무거나 다 받음.
     Request[] : Params[] 컬렉션과 동일
     
     .UserHostAddress : IP주소
     .ServerVariables["REMOTE_HOST"] : IP주소
     .ServerVariables["REMOTE_ADDR"] : IP주소
     
     .Cookies[] : 저장된 쿠키 읽어오기.
     
▶ Server개체
     .MapPath(".") : 현재 파일과 같은 경로 값 반환 : .., /, \
     .Execute() : 다른 파일 포함(인클루드)후 제어권 돌아옴
     .Transfer() : 다른 파일 포함(인클루드)후 제어권 넘김 : Execute() + Response.End()
     .UrlPathEncode() : 넘겨져온 쿼리 스트링을 유니코드로 변환(한글 처리)
     .ScriptTimeout : 서버측에서 현재 ASPX페이지를 몇초간 처리할 건지 설정
          대용량 파일 업로드 페이지는 일시적으로 Server.ScriptTimeout을 증가
          
▶ Application개체
     - Application 전역 변수 선언(Public)
          Application["변수명"] = 값; // 딱 한개만 생성
     .Lock() : 애플리케이션 변수를 잠그는 메서드
     .UnLock() : 잠긴 애플리케이션 변수를 해제하는 메서드
     
▶ Session개체
     - Session 전역 변수 선언(Private)
          Session["변수명"] = 값; // 사용자 수 만큼 생성
     .Abandon() : 현재 세션 지우기
          예전에는 세션으로 로그인 처리시 로그아웃 할 때 사용
     .SessionID : 현재 세션의 고유번호 값 반환
          GUID와 비슷 : 한명이 접속하면 웹서버는 고유한 인증값을 부여
     .SessionTimeout : 세션 시간 기록 : 기본값 20분... 더 추가시키거나 줄일경우 사용...
     
▶ Page 개체
     .IsPostBack : 현재 페이지가 처음 로드했는지, 다시 게시(PostBack)되었는 지 확인
          처음로드 : Page.IsPostBack => false
          다시게시(PostBack) : Page.IsPostBack => true
     .RegisterClientScriptBlock() : 자바스크립트를 동적으로 웹 페이지에 추가
          Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "스크립트 구분 이름", "자바
         스크립트코드");
     .RegisterStartupScript() : 자바스크립트를 동적으로 웹 페이지에 추가
          Page.ClientScript.RegisterStartupScript(this.GetType(), "스크립트 구분 이름", "자바스크
         립트코드");
     
▶ System.Web.Security.FormsAuthentication 개체 : 인증 관련
     
     [1] .SetAuthCookie() : 인증 쿠키값 부여... 인증 처리
          .GetRedirectUrl() : 인증 받기 이전의 페이지 경로값 반환.
     [2] .RedirectFromLoginPage() : 인증 처리와 동시에 이전(인증 받기 전) 페이지로 이동
     [3] Page.User.Identity.Name : 인증된 사용자명, SetAuthCookie()에서 부여된 인증 쿠키값,
          Admin, RedPlus식
     [4] Page.User.Identity.IsAuthenticated : 인증(로그인처리)되었다면, true, 그렇지 않으면
           false를 반환
     
▶ 상태관리
     서버에 저장 : 웹 애플리케이션 전체에서 살아있는 변수값 저장
          Application[] : 1개만
          Session[] : 여러개
          Cache[] : 1개만 빠른 메모리에 저장
     클라이언트에 저장
          ViewState[] : 웹 브라우저의 소스코드에 히든필드로 저장
          Response.Cookies[] : 웹 브라우저에 쿠키 저장
          Request.Cookies[] : 저장된 쿠키 읽어오기

▶ 캐싱
     <%@ OutputCache Duration="3600" VaryByParam="None" %>
          3600초 동안 현재 페이지를 캐싱(메모리에 처리 결과 담고 바로
출력)





반응형
posted by Magic_kit