lecture Home > ASP.NET > CassattÀÇ VS.NET °Ô½ÃÆÇ

CassattÀÇ VS.NET °Ô½ÃÆÇ ¸¸µé±â

   °­Á ÃÖÃÊ ÀÛ¼ºÀÏ : 2002³â 09¿ù 22ÀÏ
   °­Á ÃÖÁ¾ ¼öÁ¤ÀÏ : 2002³â 10¿ù 02ÀÏ

   °­Á ÀÐÀ½ ¼ö : ȸ

   ÀÛ¼ºÀÚ : Cassatt(±è ¿¬Áø)
   ÆíÁýÀÚ : Taeyo(±è Å¿µ)

   °­Á Á¦¸ñ : 4. ±Ûº¸±â - View.aspx

4. ±Ûº¸±â - View.aspx

ÆäÀÌÁö Ãß°¡/ÄÁÆ®·Ñ ¼³Á¤

Áö³­ °­Á¿¡¼± °Ô½ÃÆÇÀ» ¸ñ·ÏÀ¸·Î Ç¥½ÃÇØÁÖ´Â ÆäÀÌÁö ( List.aspx ) ¸¦ Çß¾ú½À´Ï´Ù. ¸ñ·Ï ÆäÀÌÁö¿¡¼­ Á¦¸ñÀ» Ŭ¸¯Çϸé, ÇØ´ç ±ÛÀÇ ³»¿ëÀ» Ç¥½ÃÇØ ÁÖ¾î¾ß ÇÒÅÙµ¥¿ä, À̹ø °­Á°¡ ±ÛÀÇ ³»¿ëÀ» È®ÀÎÇÏ´Â ÆäÀÌÁöÀÎ, View.aspx ¸¦ ¸¸µé Â÷·ÊÀÔ´Ï´Ù.

¼Ö·ç¼Ç Ž»ö±â¿¡¼­ Áö³­ List.aspx Ãß°¡ÇÒ¶§¿Í °°Àº ¹æ½ÄÀ¸·Î À¥ Æû ÆäÀÌÁö¸¦ Çϳª Ãß°¡Çϰí¿ä, À̸§À» View.aspx·Î ÇÕ´Ï´Ù. ±×¸®°í ¸¶Âù°¡Áö·Î ÆäÀÌÁö ·¹À̾ƿôÀ» FlowLayoutÀ¸·Î ÇÕ´Ï´Ù.

±×¸®°í HTML ¶õ¿¡¼­ TableÀ» ²ø¾î´Ù ³õ°í Çà/¿­À» Á¶Á¤Çϸ鼭, Web Forms ¶õ¿¡¼­ Label ³×°³, HyperLink ³×°³¸¦ ²ø¾î´Ù ³õ½À´Ï´Ù. ¼Ó¼ºÀº ´ÙÀ½ ó·³ ¹Ù²ß´Ï´Ù.
ÄÁÆ®·Ñ (ID) Text NavigateUrl ¼³¸í
Label lblWriter (°ø¹é) (ÀԷ¾ÈÇÔ) ±Û¾´ÀÌ
Label lblWriteDate (°ø¹é) (ÀԷ¾ÈÇÔ) ±Û¾´ÀÏÀÚ/Á¶È¸¼ö
Label lblTitle (°ø¹é) (ÀԷ¾ÈÇÔ) ±ÛÁ¦¸ñ
Label lblContent (°ø¹é) (ÀԷ¾ÈÇÔ) ±Û³»¿ë
HyperLink lnkPrev (°ø¹é) (ÀԷ¾ÈÇÔ) ÀÌÀü±Û ¸µÅ©
HyperLink lnkNext (°ø¹é) (ÀԷ¾ÈÇÔ) ´ÙÀ½±Û ¸µÅ©
HyperLink lnkModify [¼öÁ¤] (ÀԷ¾ÈÇÔ) ±Û¼öÁ¤ ¸µÅ©
HyperLink lnkDelete [»èÁ¦] (ÀԷ¾ÈÇÔ) ±Û»èÁ¦ ¸µÅ©
HyperLink lnkList [¸ñ·ÏÀ¸·Î] List.aspx ±Û¸ñ·ÏÀ¸·Î ¸µÅ©

Ç¥¿¡¼­ »¡°£»ö ¹ÙÅÁÀ¸·Î µÈ °ÍÀÌ ÀÔ·ÂÇØ¾ß ÇÒ ºÎºÐÀÔ´Ï´Ù. ´ÙÀ½ ±×¸²Ã³·³ ¸¸µì´Ï´Ù.

µðÀÚÀΰú °ü·ÃµÈ ºÎºÐÀÔ´Ï´Ù¸¸, lblContent ÀÚ¸®¿¡¼­ ¿À¸¥ÂÊ Å¬¸¯, ¼Ó¼º ¼±ÅÃÇØ¼­ '<TD> ¼Ó¼ºÆäÀÌÁö' â¿¡¼­ Å©±â¶õ ³ôÀ̸¦ 300À¸·Î ÁÖ°í, ¸ÂÃã¶õ ¼¼·Î¸¦ top À¸·Î ÁÖ¸é ±×¸²Ã³·³ ³»¿ë Ç¥½ÃÇÏ´Â ¶õÀÌ ³Ð¾îÁý´Ï´Ù. ( ¹°·Ð, HTML ¸ðµå¿¡¼­ ÇØ´ç ¶õÀÇ <td> ÅÂ±× Ã£¾Æ¼­ <td valign=top height=300>À̶ó ÀÔ·ÂÇØµµ µË´Ï´Ù ) ÀÌ·¸°Ô ÇÏ¸é ±ÛÀÌ ¸îÁÙ ¾ÈµÇµµ ³Ð°Ô ³ª¿Í¼­ Àú´Â ÁÁ´õ±º¿ä.


DB°ü·Ã °³Ã¼ ¼³Á¤

À̰ÍÀ¸·Î ±Û¾²±â ÆäÀÌÁö, È­¸é¿¡ º¸À̱â À§ÇØ ÇÊ¿äÇÑ ÄÁÆ®·ÑµéÀº ¸ðµÎ °®Ãá ¼ÀÀ̰í, DB¿¡¼­ ÇØ´ç ±ÛÀ» °¡Á®¿Ã DB°ü·Ã °³Ã¼¸¦ ¼³Á¤ÇÒ Â÷·ÊÀÔ´Ï´Ù. µµ±¸»óÀÚ µ¥ÀÌÅÍ ¶õ¿¡¼­ SqlConnection Çϳª¿Í SqlCommand ³×°³¸¦ ²ø¾î´Ù ³õ½À´Ï´Ù.

SqlConnectionÀº DB¿¬°áÀ» À§ÇÑ °´Ã¼ÀÔ´Ï´Ù. List.aspx °æ¿ì¿Í ¶È°°ÀÌ ¼³Á¤ÇÕ´Ï´Ù. (Name) À» dbConnectionÀ¸·Î Çϰí, Dynamic Properties ¶õ È®Àå, ConnectionString ¶õÀÇ [...] ¹öưÀ» Ŭ¸¯, 'µ¿Àû ¼Ó¼º' â¿¡¼­ '±¸¼º ÆÄÀÏÀÇ Å°¿¡ ¼Ó¼º ¸ÅÇÎ' üũ¹Ú½º¸¦ ¼±ÅÃÇØ¼­ dbConnection.ConnectionString Ű¿¡ ¸ÅÇÎÇϰí, 'µ¥ÀÌÅÍ'¶õÀÇ ConnectionString¿¡ °ªÀÌ ÀÚµ¿À¸·Î µé¾î°¡´ÂÁö È®ÀÎÇÕ´Ï´Ù.

SqlCommand ´Â ±Û ³»¿ëÀ» °¡Á®¿À±â À§ÇѰÍ, ±ÛÀÇ Á¶È¸¼ö¸¦ Çϳª Áõ°¡½Ã۱â À§ÇÑ °Í, ÀÌÀü±Û/´ÙÀ½±Û Á¤º¸¸¦ °¡Á®¿À´Â °Í µîÀÔ´Ï´Ù. ³×°³ ¸ðµÎ ¼³Á¤ÇÏ´Â ¹æ¹ýÀº µ¿ÀÏÇϰí, SQL¹® ( CommandText ) ºÎºÐ¸¸ ´Ù¸¨´Ï´Ù.

ù¹øÂ° SqlCommand ´Â Å×ÀÌºí¿¡¼­ ÇØ´ç ±ÛÀÇ ³»¿ëÀ» °¡Á®¿À±â À§ÇÑ °ÍÀÔ´Ï´Ù. ´ÙÀ½Ã³·³ ¼³Á¤ÇÕ´Ï´Ù.

  • (Name) : dbCommandGetArticle
  • Connection : dbConnection
  • CommandText :
      select writer,email,title,mode,content,readed, writeDate
      from cstVSBoard
      where seq=@seq
  • Parameters : Çϳª Ãß°¡
    ParameterName :@seq
    SqlDbType : int

µÎ¹øÂ° SqlCommand ´Â ±ÛÀÇ Á¶È¸¼ö¸¦ Çϳª Áõ°¡½Ã۱â À§ÇÑ °ÍÀÔ´Ï´Ù.

  • (Name) : dbCommandUpdateReadCount
  • Connection : dbConnection
  • CommandText :
    update cstVSBoard set readed=readed+1 where seq=@seq
  • Parameters : Çϳª Ãß°¡
    ParameterName :@seq
    SqlDbType : int

¼¼¹øÂ°, ³×¹øÂ° SqlCommand ´Â ÀÌÀü±Û/´ÙÀ½±Û ¸µÅ©¸¦ À§ÇÑ °ÍÀÔ´Ï´Ù. ÀÌÀü±Û °¡Á®¿À´Â °ÍÀº ´ÙÀ½°ú °°½À´Ï´Ù.

  • (Name) : dbCommandGetPrevArticle
  • Connection : dbConnection
  • CommandText :
    select top 1 seq, title from cstVSBoard 
    where seq>@seq order by seq asc
  • Parameters : Çϳª Ãß°¡
    ParameterName :@seq
    SqlDbType : int

´ÙÀ½±Û °¡Á®¿À´Â °ÍÀº ´ÙÀ½°ú °°½À´Ï´Ù.

  • (Name) : dbCommandGetNextArticle
  • Connection : dbConnection
  • CommandText :
    select top 1 seq, title from cstVSBoard 
    where seq<@seq order by seq desc
  • Parameters : Çϳª Ãß°¡
    ParameterName :@seq
    SqlDbType : int

DB°ü·Ã °´Ã¼µéµµ ¼³Á¤ÀÌ ³¡³µ½À´Ï´Ù.


¼Ò½º ÆíÁý

ÀÌÁ¦ Áö±Ý²¯ ¼³Á¤ÇÑ °´Ã¼µéÀ» ÀÌ¿ëÇØ¼­ ÀڷḦ °¡Á®¿À°í, ÀڷḦ È­¸é¿¡ Ãâ·ÂÇÏ´Â ºÎºÐÀ» ÀÛ¼ºÇÒ Â÷·ÊÀÔ´Ï´Ù. ÄÚµå º¸±â·Î ÀüÈ¯ÇØ¼­, View.aspx.cs ÆÄÀÏ ¸ÞÀΠŬ·¡½º( ±×´ë·Î µû¶óÇß´Ù¸é Ŭ·¡½º À̸§ÀÌ View Àϰ̴ϴ٠)¿¡ ´ÙÀ½Ã³·³ ¼Ò½º¸¦ ¸Þ¼­µå¸¦ Ãß°¡ÇÕ´Ï´Ù. Page_Load °æ¿ì¿£ ±âÁ¸¿¡ Á¤ÀǵǾîÀÖ´Â ºÎºÐ¿¡¸¸ ¼Ò½º¸¦ ³Ö½À´Ï´Ù. ¼Ò½º Ã¹ºÎºÐ, using  ¶õ¿¡´Â À̹ø¿¡ Ãß°¡ÇÒ ¼Ò½º¿¡¼­ ÇÊ¿äÇÑ ³×ÀÓ½ºÆäÀ̽ºÀÎ System.Data.SqlClient¿Í System.Text.RegularExpressionÀ» Ãß°¡ÇÕ´Ï´Ù.  ¾Æ·¡ ¼Ò½ºÀÇ ÆÄ¶õ»ö ºÎºÐÀÔ´Ï´Ù.

using System;
...(»ý·«)...
using System.Data.SqlClient;
using System.Text.RegularExpressions;

namespace MessageBoard
{
...(»ý·«)...
  public class View : System.Web.UI.Page
  {
    ...(»ý·«)...
    
    string LinkURL(string str,string target)
    {
      Regex rex = new Regex("http\\:\\/\\/\\S+");
      return rex.Replace(str,"<a href='$0' target='"+target+"'>$0</a>");
    }

    string LinkEmail(string str)
    {
      Regex rex=new Regex("\\S+\\@\\S+");
      return rex.Replace(str,"<a href='mailto:$0'>$0</a>");
    }

    string RemoveInvalidTags( string src, params string[] tags )
    {
      string expr="";
      for( int i=0; i<tags.Length; i++) 
      {
        expr+="|"+tags[i];
      }
      expr=expr.Substring(1);
      expr="(\\<\\/?\\s*)("+expr+")([^\\>]*\\>)";
      Regex rex = new Regex(expr);
      return rex.Replace( src,"$1_$2$3");
    }

    void Die(string msg) 
    {
      Response.Write(
        "<script language='javascript'>"+
        "alert('"+msg+"');history.back();"+
        "</script>");
      Response.End();
    }

    private void Page_Load(object sender, System.EventArgs e)
    {
      int seq = 0;
      String errMsg = "";
      try 
      {
        seq=int.Parse(Request.QueryString["n"]);
      }
      catch(Exception ) 
      {
      }
      if(seq==0)
        errMsg = "À߸øµÈ ±Û¹øÈ£ÀÔ´Ï´Ù";
      else 
      {
        dbConnection.Open();
        dbCommandGetArticle.Parameters["@seq"].Value=seq;
        SqlDataReader drArticle = 
          dbCommandGetArticle.ExecuteReader(CommandBehavior.SingleRow);
        if(drArticle.Read()) 
        {
          string writer = Server.HtmlEncode((string)drArticle["writer"]);
          string email = Server.HtmlEncode((string)drArticle["email"]);
          string title = Server.HtmlEncode((string)drArticle["title"]);
          int mode = (byte)drArticle["mode"];
          int readed = (int)drArticle["readed"];
          string writeDate = 
            String.Format("{0:yyyy³â M¿ù dÀÏ H½Ã mºÐ}",
                            (DateTime)drArticle["writeDate"]);
          string content = (string)drArticle["content"];
          drArticle.Close();

          if(email!="")
            writer=String.Format("<a href='mailto:{0}'>{1}</a>", 
                                  email, writer);
          lblWriter.Text="ÀÛ¼ºÀÚ : "+writer;
          lblTitle.Text="<b>"+title+"</b>";
          lblWriteDate.Text="ÀÛ¼ºÀÏ : "+writeDate+", Á¶È¸¼ö : "+readed;

          if(mode==0) {
            content=Server.HtmlEncode(content);
            content=content.Replace("  ","&nbsp; ");
            content=LinkEmail( content );
            content=LinkURL( content, "_blank" );
          }
          else 
          {
            content=RemoveInvalidTags( content, "xmp", "table", "tr", "td" );
            content="<!--\"'>>_<<'\"-->"+content+"<!--\"'>>_<<'\"-->";
          }
          content=content.Replace("\n","\n<br>");

          lblContent.Text=content;

          // Á¶È¸¼ö Áõ°¡
          dbCommandUpdateReadCount.Parameters["@seq"].Value=seq;
          dbCommandUpdateReadCount.ExecuteNonQuery();

          // ÀÌÀü±Û
          dbCommandGetPrevArticle.Parameters["@seq"].Value=seq;
          SqlDataReader drPrevArticle = 
            dbCommandGetPrevArticle.ExecuteReader(CommandBehavior.SingleRow);
          if(drPrevArticle.Read()) 
          {
            lnkPrev.NavigateUrl = "View.aspx?n="+drPrevArticle["seq"];
            lnkPrev.Text = Server.HtmlEncode((string)drPrevArticle["title"]);
          }
          else
            lnkPrev.Visible=false;
          drPrevArticle.Close();

          // ´ÙÀ½±Û
          dbCommandGetNextArticle.Parameters["@seq"].Value=seq;
          SqlDataReader drNextArticle = 
            dbCommandGetNextArticle.ExecuteReader(CommandBehavior.SingleRow);
          if(drNextArticle.Read()) 
          {
            lnkNext.NavigateUrl = "View.aspx?n="+drNextArticle["seq"];
            lnkNext.Text = Server.HtmlEncode((string)drNextArticle["title"]);
          }
          else
            lnkNext.Visible=false;
          drNextArticle.Close();

          // ¼öÁ¤, »èÁ¦ ¸µÅ©

          lnkModify.NavigateUrl="Write.aspx?m=1&n="+seq;
          lnkDelete.NavigateUrl="Delete.aspx?n="+seq;
        }
        else 
        {
          errMsg="¾ø°Å³ª »èÁ¦µÈ ±ÛÀÔ´Ï´Ù";
        }
      }
      dbConnection.Close();
      if(errMsg!="")
        Die(errMsg);
    }

    ...(»ý·«)...
  }
}
DB °´Ã¼°¡ Á¤ÀÇ µÇ¾îÀÖÀ¸´Ï, ÀÌ ¼Ò½º ºÎºÐÀº ¿©·¯ºÐµéµµ ³ª¸§´ë·ÎÀÇ ¹æ½ÄÀ¸·Î ÇϽǼö ÀÖÀ»µí ÇÕ´Ï´Ù. À§ ¼Ò½º´Â, ¾îÁö°£ÇÑ »óȲ¿¡¼­µµ(?) Àß ÀÛµ¿Çϵµ·Ï Çϱâ À§ÇØ ¾à°£Àº º¹ÀâÇÏ°Ô µÇ¾îÀÖ½À´Ï´Ù. °Ô½ÃÆÇÀº »ç¿ëÀÚ°¡ Á÷Á¢ ÀÔ·ÂÇÏ´Â ºÎºÐÀ̱⠶§¹®¿¡, ¾Æ¹«·¸°Ô³ª ÀÔ·ÂÇÏ´Â °æ¿ì¿¡µµ ¿¡·¯ ¾øÀÌ Àß ÀÛµ¿ÇØ¾ß ÇÒ°Ì´Ï´Ù. ƯÈ÷ HTML ű׵µ Çã¿ëÇϵµ·Ï ÇÒ¶§¸é ÁÖÀǰ¡ ÇÊ¿äÇÕ´Ï´Ù.

¿ì¼±, ¾ÕºÎºÐ¿¡ Á¤ÀÇµÈ ³×°³ÀÇ ¸Þ¼­µå¿¡ ´ëÇØ ¼³¸íµå¸®°Ú½À´Ï´Ù.

  • LinkUrl : ¹®ÀÚ¿­°ú, Ÿ°Ù À©µµ¿ì À̸§À» ÁÖ¸é ±× ¹®ÀÚ¿­ ³»ÀÇ url ÇüÅÂÀÇ ´Ü¾î ( http://cassatt.pe.kr ó·³ http://°¡ ¾Õ¿¡ ºÙ´Â ´Ü¾î )¿¡ ÀÚµ¿À¸·Î ¸µÅ©¸¦ °Ì´Ï´Ù.
  • LinkEmail : ¹®ÀÚ¿­ ³»¿¡ cassatt@hanmir.com ó·³ Áß°£¿¡ @±âÈ£°¡ µé¾î°£ ´Ü¾î°¡ ÀÖÀ¸¸é, ±×°ÍÀ» ¸ÞÀÏÁÖ¼Ò·Î ÀνÄÇØ¼­ ÀÚµ¿À¸·Î ¸µÅ©¸¦ °Ì´Ï´Ù.
  • RemoveInvalidTags : ¹®ÀÚ¿­³»¿¡ ÆÄ¶ó¸ÞÅÍ·Î ÁØ Å±׵éÀÌ ÀÖÀ¸¸é, ÅÂ±× ¾Õ¿¡ ¾ð´õ¶óÀÎ(_)À» ºÙ¿©¼­ űװ¡ ½ÇÇàµÇÁö ¸øÇϵµ·Ï ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î <table> °æ¿ì¶ó¸é, table ¾Õ¿¡ _ °¡ ºÙ¾î¼­ <_table> ó·³ ¹Ù²î¾î űװ¡ ½ÇÇàÀÌ ¾ÈµË´Ï´Ù. ¼Ò½º¿¡¼± <xmp>, <table>, <tr>, <td> °°Àº ű׵éÀÌ ½ÇÇàµÇÁö ¾Êµµ·Ï Çß½À´Ï´Ù.
  • Die : ÁÖ¾îÁø ¹®ÀÚ¿­·Î ¸Þ½ÃÁö¹Ú½º¸¦ ¶ç¿ì°í, ÀÌÀü ÆäÀÌÁö·Î µ¹¾Æ°¡´Â ÀÚ¹Ù½ºÅ©¸³Æ®¸¦ Ãâ·ÂÇÑ ÈÄ ½ÇÇàÀ» ¸¶Ä¨´Ï´Ù(Response.End()). ¿¡·¯Ã³¸®¿ëÀÔ´Ï´Ù.

Page_Load À̺¥Æ®ÀÇ °æ¿ì¿£, ¿ì¼± ¾Õ °­ÁÂÀÇ List.aspx¿¡¼­ Á¦¸ñÀ» Ŭ¸¯Çϸé View.aspx?n=10 ó·³ ±ÛÀÇ seq ÇÊµå °ªÀ» n À̶õ ÆÄ¶ó¸ÞÅÍ·Î, GET ¹æ½ÄÀ¸·Î È£ÃâÇϵµ·Ï Çß¾ú½À´Ï´Ù. ±×·¡¼­, ±× °ªÀ» ¾Ë¾Æ³»¼­, dbCommandGetArticles ¸¦ È£ÃâÇØ¼­ SqlDataReader·Î ÇÑÁÙ ÀоîµéÀÔ´Ï´Ù.

°¡Á®¿Â °ªÀ» ¾Õ¿¡¼­ Á¤ÀÇÇß´ø lblWriter, lblWriteDate, lblTitle, lblContent °°Àº ¶óº§ ÄÁÆ®·Ñ Text °ª¿¡ ³Ö¾îÁÖ¸é Ç¥ÇöµÇ°Ú´Âµ¥¿ä, ±×Àü¿¡ ¾à°£¾¿ º¯ÇüÀÌ ÇÊ¿äÇÕ´Ï´Ù. ¸ÞÀÏÁÖ¼Ò¸¦ ÀÔ·ÂÇß´Ù¸é ±Û¾´ÀÌ À̸§¿¡ ¸ÞÀÏÁÖ¼Ò¸¦ ¸µÅ©ÇØ¾ß Çϰí¿ä, ÀÔ·ÂÀÏÀ̶ó¸é ¿øÇÏ´Â Æ÷¸ËÀÇ ³¯Â¥ ÇüÅ·Π¹Ù²ãÁà¾ß Çϰí, Á¦¸ñ¶õÀ̶ó¸é Server.HtmlEncode ¸¦ ÀÌ¿ëÇØ¼­ HTML űװ¡ ¸ÔÁö ¾Êµµ·Ï ÇØ¾ß ÇÕ´Ï´Ù.
±ÛÀÇ ³»¿ëÀ̶ó¸é, ±Û¾²±â(Write.aspx)¶õ¿¡¼­ ±ÛÀÌ TEXT Çü½ÄÀÎÁö, HTML ű׸¦ Çã¿ëÇÏ´ÂÁö ¼±ÅÃÇÒ¼ö ÀÖµµ·Ï Çß¾ú´Âµ¥¿ä, ±×¿¡ ¸ÂÃß¾î ¹Ù²ã¾ß ÇÕ´Ï´Ù.
TEXT Çü½ÄÀ̶ó¸é, Server.HtmlEncode·Î űװ¡ ½ÇÇàµÇÁö ¾Êµµ·Ï Çϰí, °ø¹é µÎ°³("  ") ¸¦ &nbsp; + °ø¹é Çϳª ·Î ¹Ù²ã¼­, ±Û ¾Õ¿¡ °ø¹éÀ» ÀÔ·ÂÇØµµ Ç¥½Ã°¡ Àß µÇµµ·Ï ÇÕ´Ï´Ù. ±×¸®°í ±Û ³»¿ëÁß¿¡ url À̳ª email ÁÖ¼Ò°¡ ÀÖÀ¸¸é ¸µÅ©¸¦ °Ì´Ï´Ù.
HTML Çü½ÄÀ̶ó¸é, űװ¡ ½ÇÇàµÇ¾î¾ß ÇϹǷΠƯº°ÇÑ Ã³¸®´Â ÇÏÁö ¾ÊÁö¸¸ ¾Õ¼­ Á¤ÀÇÇß´ø RemoveInvalidTags ¸Þ¼­µå·Î ¿äÁÖÀÇ(?) ű׵éÀº ¸ÔÁö ¾Êµµ·Ï ÇÕ´Ï´Ù. ( ƯÈ÷ xmp °°Àº űװ¡ ¸ÔÀ¸¸é ´Ù ¸Á°¡Áý´Ï´Ù ) ±×¸®°í ³»¿ë ¾ÕµÚ¿¡  <!--"'>>_<<'"--> ¸¦ ºÙÀÌ¸é »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ ±ÛÀÇ ¸µÅ©°¡ ±úÁ®ÀÖ´Â °æ¿ì ( ¿¹¸¦ µé¾î <a href="....> ó·³ µû¿ÈÇ¥¸¦ ´ÝÁö ¾ÊÀº °æ¿ì )¿¡µµ ¾î´À Á¤µµ´Â ¸·¾ÆÁÝ´Ï´Ù. CrazyWWWBoard°¡ ±×·¸°Ô ÇÏ´õ±º¿ä.
±×¸®°í µÎ Çü½Ä ¸ðµÎ, ¸®ÅÏ ÄÚµå("\n") ¸¦ <br> ű׷Π¹Ù²ã¼­ Çà¹Ù²Þ µÇµµ·Ï ÇÕ´Ï´Ù.

ÀÌÈÄ¿£ ±ÛÀÇ Á¶È¸¼ö¸¦ Çϳª Áõ°¡½Ã۰í, ÀÌÀü±Û/´ÙÀ½±ÛÀ» °¡Á®¿Í¼­ Ç¥½ÃÇϰí, ±Û¼öÁ¤, ±Û »èÁ¦ ¸µÅ©¿¡ urlÀ» ³Ö´Â µîÀÇ ÀÛ¾÷À» ÇÕ´Ï´Ù.

¾à°£Àº º¹ÀâÇÑ ¼Ò½º¿´³ª ¸ð¸£°Ú½À´Ï´Ù. ½ÇÁ¦·Î °Ô½ÃÆÇÀ» ¿î¿µÇϽô٠º¸¸é ´Ù¾çÇÑ °æ¿ì¸¦ ¸¸³ª°Ô µÉ°Ì´Ï´Ù. ¼Ò½ºÁß ÀϺθ¦ »©°í, ³Ö°í ÇϽø鼭 ¾Æ¹«·¸°Ô³ª ÀÔ·ÂÇϸ鼭 Å×½ºÆ® ÇØº¸¼¼¿ä.

Page_Load ¸Þ¼­µå, µÞºÎºÐ º¸½Ã¸é, ¼öÁ¤/»èÁ¦ ¸µÅ©ÀÇ URL·Î ¼³Á¤ÇÏ´Â °ÍÀ» º¸½Ç¼ö ÀÖ½À´Ï´Ù.

lnkModify.NavigateUrl="Write.aspx?m=1&n="+seq;
lnkDelete.NavigateUrl="Delete.aspx?n="+seq;

±Û ¼öÁ¤ÀÇ °æ¿ì, ¸Ç óÀ½ ¸¸µé¾ú´ø Write.aspx ¿¡ ±â´ÉÀ» Ãß°¡Çؼ­ ±¸ÇöÇÒ ¿¹Á¤ÀÔ´Ï´Ù. ±Û ¼öÁ¤À̳ª, ±Û¾²±â³ª °ÅÀÇ °°Àº UI ¶ó¼­¿ä.
±×¸®°í »èÁ¦ ¹öưÀ» ´©¸£¸é Delete.aspx ¿¡ seq °ªÀ» ³Ñ°Ü, ±× ±ÛÀ» »èÁ¦Çϵµ·Ï Çϰí ÀÖ½À´Ï´Ù. Delete.aspx ¿¡¼± ºñ¹Ð¹øÈ£¸¦ ÀԷ¹޾Ƽ­, ÇØ´ç ±ÛÀÇ ºñ¹Ð¹øÈ£¿Í ºñ±³Çؼ­ »èÁ¦ÇÏ¸é µÇ°Ú½À´Ï´Ù. ´ÙÀ½ °­Á¿¡¼± ±× ±Û »èÁ¦ ÆäÀÌÁö( Delete.aspx )¸¦ ¸¸µé¾îº¸°Ú½À´Ï´Ù.

 

Back