lecture Home > ASP.NET > Taeyo's ASP.NET

Taeyo's ASP.NET

   °­Á ÃÖÃÊ ÀÛ¼ºÀÏ : 2006³â 11¿ù 14ÀÏ
   °­Á ÃÖÁ¾ ¼öÁ¤ÀÏ : 2006³â 11¿ù 15ÀÏ

   °­Á ÀÐÀ½ ¼ö : ȸ

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

   °­Á Á¦¸ñ : UserControl ÅÛÇø´À» ÀÌ¿ëÇÑ °øÅë UI ·»´õ¸µ 

°­Á Àü Å¿ÀÀÇ Àâ´ã>

ÀÌÁ¦ 2006³âÀÇ Å©¸®½º¸¶½ºµµ ÇÑ´Þ Á¤µµ¹Û¿¡ ³²Áö ¾Ê¾Ò³×¿ä.
¿©·¯ºÐµéÀº Å©¸®½º¸¶½º¿¡ ¹«¾ùÀ» ÇÏ½Ç »ý°¢À̽Ű¡¿ä?
¹«¾ùÀ» °èȹÇÏ´ø ÇÑ ÇØ¸¦ Àß Á¤¸®Çϸ鼭~ Áñ°Ì°Ô º¸³»½Ã±â ¹Ù¶ø´Ï´Ù.


°øÅëÀûÀ¸·Î ÀÚÁÖ »ç¿ëÇÏ´Â UI ¿µ¿ªÀ» ÇÊ¿ä·Î ÇÒ °æ¿ì ¿©·¯ºÐÀº ÁÖ·Î ¾î¶»°Ô ÀÛ¾÷À» ÇØ ¿À¼Ì³ª¿ä? ´ëºÎºÐÀÇ °æ¿ì´Â ±× ¿µ¿ªÀ» User ControlÀ̳ª Custom Control·Î Á¦ÀÛÇØ¼­ »ç¿ëÇØ ¿À¼ÌÀ» °ÍÀÔ´Ï´Ù. "³ª´Â µÑ ´Ù ¾Æ´Ï¾ú´Ù!!"¶ó°í ÀÚ½ÅÇϽô ºÐÀº ÁÁ¾Ò¾î!! ÆÐ½º!! -_-+

´ë°³ÀÇ °æ¿ì´Â User ControlÀ» ÀÌ¿ëÇßÀ»ÅÙµ¥¿ä. ÀÌ´Â User ControlÀÇ °³¹ßÀÌ »ó´çÈ÷ ½±±â ¶§¹®ÀÏ °ÍÀÔ´Ï´Ù. Custom ControlÀÇ °æ¿ì´Â °³¹ß¿¡ ÀûÁö ¾ÊÀº ³»°ø°ú ½Ã°£ÀÌ ¿ä±¸µÇ±â¿¡ ½±»ç¸® ´ýº­µé ¼ö ¾øÁö¸¸, User ControlÀº ±âÁ¸¿¡ Á¸ÀçÇÏ´Â ÄÁÆ®·ÑµéÀ» º¹ÇÕÀûÀ¸·Î ¹­¾î¼­ ½±°Ô Ãâ·Â ¿µ¿ªÀ» ²Ù¹Ð ¼ö ÀÖÀ¸´Ï±î¿ä.

À̹ø °­Á¿¡¼­ ÇϰíÀÚ ÇÏ´Â À̾߱â´Â ¹Ù·Î ÀÌ·¯ÇÑ User ControlÀ» »ç¿ëÇÔ¿¡ À־, UI °³¹ßÀÚµéÀÌ Á» ´õ ¼Õ½±°Ô À̸¦ ´Ù·ê ¼ö ÀÖ°Ô, ±×¸®°í À̸¦ ÀÏÁ¾ÀÇ ÅÛÇø´Ã³·³ ÀÌ¿ëÇÒ ¼ö ÀÖ°Ô ÇÏ´Â ÀÛÀº ±â¹ÝÀ» ¸¸µå´Â ¹æ¹ý¿¡ ´ëÇÑ °ÍÀÔ´Ï´Ù. ¹Ýµå½Ã ÇÊ¿äÇÑ ÀÛ¾÷Àº ¾Æ´Ò ¼ö ÀÖÁö¸¸, ÀÏ´Ü ÀÛ¼ºÇصθé Àü¹ÝÀûÀÎ °³¹ßÀÌ Æí¸®ÇØÁø´Ù°í³ª ÇÒ±î¿ä? °³¹ß »ý»ê¼º ¹× À¯Áö º¸¼ö¼ºÀÌ ÁÁ¾ÆÁö´Â ¹æ¾ÈÀ̶ó°í º¸½Ã¸é µÉ µí ÇÕ´Ï´Ù.

Á¦°¡ ¾÷¹« ÇÁ·ÎÁ§Æ®¿¡¼­ ÇÏ´Â ¿ªÇÒÀÌ ÁÖ·Î ¾ÆÅ°ÅØÃ³¸¦ Àâ´Â´Ù°Å³ª, °øÅë ¸ðµâÀ» ¼³°è ¹× °¡À̵å ÇѴٰųª, °³¹ßÀÚµéÀÇ °³¹ß »ý»ê¼ºÀ» ³ôÀ̱â À§ÇÑ ÇÁ·¹ÀÓ¿öÅ© ÀÛ¾÷À» ÇѴٰųª ÇÏ´Â ÀÛ¾÷ÀÌ´Ùº¸´Ï ÀÌ·¯ÇÑ ÂÊ¿¡ ´ëÇÑ °ü½ÉÀÌ º»ÀÇ ¾Æ´Ï°Ô »ý±æ ¼ö ¹Û¿¡ ¾ø´õ±º¿ä(½ÇÀº, ¾÷üÀÇ °³¹ßÇ¥ÁØÆÀ¿¡¼­ ±×·± °ÍµéÀ» ¿ä±¸ÇØ ¿À°Åµç¿ä. ÀÌ·± °Ô ÀÖÀ¸¸é ÆíÇÒ °Í °°Àºµ¥ ¸¸µé¾î ÁÖ¼¼¿ä. ÀÌ°Í Á» ÀÚµ¿È­ÇÒ ¼ö ÀÖ´Â µµ±¸°¡ ÀÖ¾úÀ¸¸é ÁÁ°Ú¾î¿ä. µîµî -_-+).

¾Æ! ±×·¯´Ï±ñ, Á¤È®È÷ À̹ø °­Á°¡ ¾î¶² ³»¿ëÀ» ´Ù·ç´ÂÁö °¨ÀÌ Àß ¿ÀÁö ¾ÊÀ¸½Å´Ù±¸¿ä? ±×·¸´Ù¸é, Á» ´õ ±¸Ã¼ÀûÀ¸·Î ¸»¾¸À» µå·Á¾ß ÇÒ µí Çϳ׿ä. À̹ø °­ÁÂÀÇ ÁÖ ³»¿ëÀº È­¸é¿¡ °øÅëÀûÀ¸·Î »ç¿ëµÇ´Â Ãâ·Â ¿µ·ÂÀ» User Control·Î ¸¸µé°í À̸¦ µ¿ÀûÀ¸·Î ¼Õ½±°Ô ÆäÀÌÁö¿¡ ³¢¿ö³ÖÀ» ¼ö ÀÖ°Ô ÇÏ·Á ÇÕ´Ï´Ù.

"¼³¸¶, Page.LoadControl() ¸Þ¼­µå¸¦ ÀÌ¿ëÇØ¼­ ÆäÀÌÁö¿¡ µ¿ÀûÀ¸·Î User ControlÀ» ³ÖÀÚ´Â À̾߱⸦ ÇÏ·Á´Â °ÍÀº ¾Æ´Ï°ÚÁÒ?" ¶ó°í ÇϽô ºÐµéÀÌ °è½Ã´Âµ¥¿ä. ´ÙÇàÈ÷µµ ±× À̾߱â´Â ¾Æ´Õ´Ï´Ù(¾ö¹ÐÈ÷ ¸»Çϸé, ÀϺδ ¸Â±âµµ ÇÕ´Ï´Ù¸¸ -_-). Page.LoadControl() ¸Þ¼­µå¸¦ ÀÌ¿ëÇØ¼­ ÆäÀÌÁö¿¡ µ¿ÀûÀ¸·Î User ControlÀ» Ãß°¡ÇÏ´Â °ÍÀº User ControlÀÇ Ãâ·Â µ¥ÀÌÅͰ¡ Á¤ÀûÀÎ °æ¿ì¿¡ ÇÑÇØ ºÎÇÕÇÒ °ÍÀÔ´Ï´Ù. ¸¸ÀÏ, User ControlÀÌ Repeater³ª DataList µîÀÇ ÄÁÆ®·Ñ·Î ±¸¼ºµÇ¾î ÀÖ°í(¿¹¸¦ µé¸é, °øÁö»çÇ× ¸ñ·Ï °°Àº), µ¥ÀÌÅÍ ¹ÙÀεùÀÌ µÈ »óÅ·ΠPage¿¡ Ãß°¡µÇ¾î¾ß ÇÑ´Ù¸é ¾î¶»°Ô ÇÒ±î¿ä?

"¹¼´Ï±î? Àå³­ÇϽʴϱî? ±×·³ User Control¾È¿¡¼­(¿¹¸¦ µé¸é, ControlÀÇ Page_Load À̺¥Æ®) µ¥ÀÌÅÍ ¹ÙÀεù ÀÛ¾÷À» ÇÏ¸é µÇÀݾƿä"¶ó°í À̾߱âÇϽô ºÐµé °è½Ê´Ï´Ù. ÇÖ!!! ¸Â´Â ¸»¾¸ÀÔ´Ï´Ù. ±×·± ¹æ¹ýÀÌ ÀÖ¾ú±º¿ä. À½¡¦ ±×·¸³×¿ä.. È졦 ±×·¸±¸³ª¡¦

±×·¸½À´Ï´Ù. ÀϹÝÀûÀ¸·Î´Â ±×·¸°Ôµé ÀÛ¾÷À» ÇϼÌÀ» °ÍÀÔ´Ï´Ù. ¹°·Ð, °øÁö»çÇ× ¸ñ·ÏÀÇ Ãâ·Â °°Àº °æ¿ì´Â °øÅëÀûÀ¸·Î ¿©±â Àú±â¿¡¼­ ÀÚÁÖ »ç¿ëµÇ±â¿¡ ºÐ¸í User Control(ȤÀº º°µµÀÇ ÄÁÆ®·Ñ)·Î ¸¸µé¾î¼­ »ç¿ëÇÏ´Â °ÍÀÌ ÀÌ·Î¿ï °ÍÀÔ´Ï´Ù. ±×¸®°í, ±× °æ¿ì ´ëºÎºÐ µ¥ÀÌÅÍ ¾×¼¼½º ÇÏ´Â Äڵ尡 .ascx ÆÄÀÏ ¾È¿¡ ´ã±â°Ô µÇ°ï ÇÏÁÒ. N-Tier ÀÛ¾÷À» ¸¹ÀÌ ÇØº¸½Å ºÐµéÀ̶ó¸é Business Logic ·¹À̾î¿Í Presentation ·¹À̾ ¸íÈ®ÇÏ°Ô ±¸ºÐÇÏ¿© ÀÛ¾÷À» ÇϼÌÀ» °ÍÀÔ´Ï´Ù. ±×·¸±â¿¡ ¹°·Ð, ÀÌ¿Í °°Àº °æ¿ì¶ó ÇØµµ, ascx ÆÄÀÏ ¾È¿¡ µ¥ÀÌÅ͸¦ Á÷Á¢ÀûÀ¸·Î ¾×¼¼½º ÇÏ´Â ÄÚµå´Â ÀÛ¼ºÇÏÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù. ´Ù¸¸, ºñÁî´Ï½º ·ÎÁ÷ ÄÄÆ÷³ÍÆ®(BLC)³ª µ¥ÀÌÅÍ ¾×¼¼½º ÄÄÆ÷³ÍÆ®(DAC)¸¦ È£ÃâÇÏ¿© ¾ò¾î¿Â °á°ú¸¦ ¹ÙÀεù ÇÏ´Â ÄÚµå Á¤µµ¸¸ÀÌ ³õ¿©Á® ÀÖ°ÚÁÒ? ¿ä´Â ¾î·µç ±×·¯ÇÑ Äڵ尡 ÀÖ±â´Â ÀÖ¾î¾ß¸¸ ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. ±×·¸±â¿¡, ±× User ControlÀº ¿À·ÎÁö °øÁö»çÇ×À» Ãâ·ÂÇϱâ À§ÇÑ "°øÁö»çÇ× ¿ë User Control"À̶õ À̸§À» °®°Ô µÉ °ÍÀÔ´Ï´Ù. ¿Ö³ÄÇϸé, ±×·¯ÇÑ ¸ñÀûÀ¸·Î User ControlÀ» ²Ù¹Î °ÍÀ̴ϱî¿ä.

ÇÏÁö¸¸, User ControlÀ» ÀÛ¼ºÇÏ´Ù º¸¸é, Ãâ·ÂÇÏ´Â µ¥ÀÌÅ͸¸ ´Ù¸¦ »ÓÀÌÁö, ±× Ãâ·Â À¯ÇüÀÌ ¸Å¿ì À¯»çÇÑ °æ¿ì¸¦ ¸¹ÀÌ Á¢ÇÏ°Ô µË´Ï´Ù. ¹Ù·Î ¿©±â¼­ ÇÑ °¡Áö ¾ÆÀ̵ð¾î°¡ »Ï·á·Õ »ý°Ü³³´Ï´Ù. User ControlÀ» ÅÛÇø´Ã³·³ »ç¿ëÇÒ ¼ö´Â ¾øÀ»±î? Áï, °øÁö»çÇ× µ¥ÀÌÅÍ´ø ÁÖ¼Ò ¸ñ·Ï µ¥ÀÌÅÍ´ø µ¥ÀÌÅ͸¦ ´øÁ®ÁÖ¸é ¸ñ·ÏÀ» Ãâ·ÂÇÏ´Â User ControlÀ» ¸¸µé¾îµÎ¸é °³¹ß »ý»ê¼ºÀÌ ´õ ³ª¾ÆÁöÁö ¾ÊÀ»±î? ÇÏ´Â »ý°¢ÀÌ µé ¼ö ÀÖ´Ù´Â °ÍÀÌÁÒ. ¹Ù·Î ±×°ÍÀÌ À̹ø °­Á¿¡¼­ À̾߱âÇϰíÀÚ ÇÏ´Â ³»¿ëÀÔ´Ï´Ù.

Àü¿ë User Control(°øÁö»çÇ׿ë ÄÁÆ®·Ñ, °øÅë µ¥ÀÌÅÍ Ãâ·Â¿ë ÄÁÆ®·Ñ µî ƯÁ¤ µ¥ÀÌÅ͸¦ Ãâ·ÂÇϱâ À§ÇØ ÀÛ¼ºÇÑ ÄÁÆ®·Ñ)À» ÀÛ¼ºÇÏ´Â °ÍÀÌ ³ª»Ú´Ù´Â À̾߱â´Â ¾Æ´Õ´Ï´Ù. ±×´Â ¸Å¿ì ÀϹÝÀûÀÎ ¹æ¹ýÀ̴ϱî¿ä. ´Ù¸¸, »óȲ¿¡ µû¶ó¼­´Â À̸¦ Á» ´õ »ý»ê¼ºÀÌ ³ôÀº ¹æÇâÀ¸·Î ¹Ù²ãº¸´Â °Íµµ ³ª»ÚÁö ¾Ê´Ù´Â »ý°¢ÀÔ´Ï´Ù(»ý»ê¼ºÀº ÁÁ¾ÆÁö´Â ¹Ý¸é, ¼º´ÉÀûÀ¸·Î´Â ¾à°£ÀÇ Èñ»ýÀÌ µû¸¦ ¼ö ÀÖ½À´Ï´Ù). Áï, º°µµÀÇ ÄÁÆ®·Ñ·¯ Ŭ·¡½º°¡ À־ ±×°¡ µ¿ÀûÀ¸·Î User Control¿¡ µ¥ÀÌÅ͸¦ ä¿ì°í ¹ÙÀεùÀ» Çϵµ·Ï ÇÏÀÚ´Â °ÍÀÌÁÒ. ÀÌ·± ½ÄÀ¸·Î ±¸¼ºÇÏ°Ô µÇ¸é, ascx´Â ´ÜÁö Ãâ·ÂÀ» À§ÇÑ Äڵ常À» ´ã°ÔµÇ¾î ¸Å¿ì °£°áÇØÁö¸ç, ascx¸¦ ÀÏÁ¾ÀÇ È­¸é ÅÛÇø´ °ÝÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù.

¿¹¸¦ µé¸é, ´ÙÀ½Àº Á¦°¡ ÀÛ¼ºÇØ º» °øÁö»çÇ× User Control(View.ascx)ÀÇ ¼Ò½º ÄÚµå ÀüüÀÔ´Ï´Ù.

View.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="View.ascx.cs" Inherits="Template_View" %>
<asp:DataList ID="DataList1" runat="server">
    <ItemTemplate>
        <%# Eval("title") %>
    </ItemTemplate>
</asp:DataList>

View.ascx.cs
public partial class Template_View : System.Web.UI.UserControl
{
    private object _data;
    public object Data
    {
        get { return _data; }
        set { _data = value; }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        DataList1.DataSource = Data;
        DataList1.DataBind();
    }
}

º¸½Ã´Ù½ÃÇÇ, User Control¿¡´Â µ¥ÀÌÅÍ ¹ÙÀεù ÄÚµå ¿Ü¿¡´Â ¾Æ¹«°Íµµ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù. ¹ÙÀεùÀ» À§ÇÑ µ¥ÀÌÅ͸¦ °¡Á®¿À´Â Äڵ嵵 Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ´Â ¿ÜºÎ ÄÁÆ®·Ñ·¯ Ŭ·¡½º°¡ µ¿ÀûÀ¸·Î µ¥ÀÌÅ͸¦ ¹Ð¾î³Öµµ·Ï ÇÒ °ÍÀ̱⠶§¹®ÀÔ´Ï´Ù.

ÀÌ ¹æ½ÄÀÇ ÀåÁ¡Àº È­¸é °³¹ßÀÚ°¡ User ControlÀÇ HTML ±¸¿ª¿¡¸¸ ÁýÁßÇØ¼­ ÀÛ¾÷À» ÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. ³»ºÎÀûÀ¸·Î µ¥ÀÌÅͰ¡ ¾î¶»°Ô ¹ÙÀεùµÇ´ÂÁö ¾î¼´ÂÁö ÀüÇô °ü½ÉÀ» °®Áö ¾Ê¾Æµµ µË´Ï´Ù. È­¸éÀÇ µðÀÚÀθ¸À» »ý°¢ÇÏ¸é µÇ±â¿¡ ÀÌ User ControlÀ» ÀÏÁ¾ÀÇ ÅÛÇø´Ã³·³ À̸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÌÁÒ. ÁÖ¾îÁö´Â µ¥ÀÌÅͰ¡ ¾î¶² °ÍÀ̳Ŀ¡ µû¶ó °øÁö»çÇ×À» Ãâ·ÂÇÒ ¼öµµ ÀÖ°í, ´Ù¸¥ ¸ñ·Ï µ¥ÀÌÅ͵éÀ» Ãâ·ÂÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

°á°úÀûÀ¸·Î, ÀÌ´Â µ¿ÀÏÇÑ °á°ú¸¦ ¾ò±â À§ÇÑ ¶Ç ´Ù¸¥ ¹æ½Ä(°³¹ß »ý»ê¼ºÀ» ³ôÀÌ´Â ¹æ½Ä)ÀÔ´Ï´Ù. ÇÏÁö¸¸, ±×·¸´Ù°í ÀÌ ¹æ½ÄÀÌ ²À ¿Ç´Ù°í ¸»ÇÒ ¼ö´Â ¾ø½À´Ï´Ù. Á¦°¡ ÁøÇàÇÏ´Â ÇÁ·ÎÁ§Æ®¿¡¼­´Â À̸¦ ÀÌ¿ëÇÏ¿© °³¹ß¼º Çâ»ó°ú À¯Áö º¸¼ö¼ºÀÇ Çâ»óÀÌ ÀÖ¾ú½À´Ï´Ù¸¸, ¿©·¯ºÐÀÇ »óȲ¿¡¼­´Â ¿ÀÈ÷·Á ¹øÀ⽺·´°í ¾î·Æ°Ô ´À²¸Áú ¼öµµ ÀÖ½À´Ï´Ù. ±×·¯´Ï, ³¡±îÁö Àß »ìÆìº¸½Ã°í ÆÇ´ÜÇϽñ⠹ٶø´Ï´Ù. ±×·¯³ª, À̸¦ ¿©·¯ºÐÀÇ ¾÷¹«¿¡ Àû¿ëÇÏÁö´Â ¾Ê´Â´Ù ÇÏ´õ¶óµµ, ÄÁ¼Á Á¤µµ´Â ´À²¸º¸½Ã±â¸¦ ±ÇÇØ º¾´Ï´Ù.

»ç½Ç, ÀÌ ÄÁ¼ÁÀº ASP.NETÀÇ ´ëºÎÀÎ Scott GuthrieÀÇ ºí·Î±×¿¡ ¿Ã¶ó¿Â "Cool UI Templating Technique to use with ASP.NET AJAX for non-UpdatePanel scenarios"¶õ ±Û¿¡¼­ ÈùÆ®¸¦ ¾ò¾î ÀÛ¼ºÇÑ °ÍÀÔ´Ï´Ù. ÇØ¼­, »ç½Ç ÀÌ ÄÁ¼ÁÀº Ajax ¾ÖÇø®ÄÉÀ̼ÇÀ» Á¦ÀÛÇÒ °æ¿ì¿¡ ´õ ÀûÀýÇÏ´Ù°í º¸¿©Áý´Ï´Ù.

http://weblogs.asp.net/scottgu/archive/2006/10/22/Tip_2F00_Trick_3A00_-Cool-UI-Templating-Technique-to-use-with-ASP.NET-AJAX-for-non_2D00_UpdatePanel-scenarios.aspx

ÀÚ. ±×·¸´Ù¸é, ÀüüÀûÀÎ ±¸Çö ¼³°è¸¦ »ìÆìº¸°í, ½ÇÁ¦ ±¸ÇöÀ» Çѹø ÇØº¸µµ·Ï ÇϰڽÀ´Ï´Ù.

TitlesManager¶õ Ŭ·¡½º´Â pubs µ¥ÀÌÅͺ£À̽ºÀÇ titles Å×ÀÌºí¿¡¼­ Ã¥ µ¥ÀÌÅÍ(DataTable)¸¦ °¡Á®¿À´Â ¿ªÇÒÀ» ¼öÇàÇϸç, ViewManager¸¦ ÀÌ¿ëÇÏ¿© ¾ò¾î¿Â µ¥ÀÌÅ͸¦ User Control¿¡ ¹ÙÀεùÇÑ µÚ, À̸¦ ¹ÝȯÇÏ´Â ¸Þ¼­µå¸¦ Á¦°øÇϴ Ŭ·¡½ºÀÔ´Ï´Ù. ¼³¸í¸¸À¸·Î´Â ÀÌÇØ°¡ ¾î·Á¿ï ¼ö ÀÖÁö¸¸, Àá½Ã µÚ¿¡ ¼Ò½º Äڵ带 º¸½Ã¸é ÀÌÇØ°¡ µÇ½Ç °ÍÀÔ´Ï´Ù. »ç½Ç, TitlesManager Ŭ·¡½º¸¦ º°µµ·Î Á¦ÀÛÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù¸¸(±×³É aspx ÆäÀÌÁö¿¡ Äڵ带 ³Ö¾îµµ µ¿ÀÛÇÏ´Â µ¥¿¡´Â ¹®Á¦°¡ ¾øÀ¸´Ï), ³í¸®ÀûÀ¸·Î ¿ªÇÒ ±¸ºÐÀ» ÇÏ´Â °ÍÀÌ ¼³°èÀûÀ¸·Î ÁÁ¾Æº¸À̱⿡ º°µµÀÇ Å¬·¡½º·Î ÀÛ¼ºÇØ º¸¾Ò½À´Ï´Ù.

ViewManagerÀÇ ¿ªÇÒÀº ÀÌ ÄÁ¼Á¿¡¼­ ¸Å¿ì Áß¿äÇÏÁö¸¸, ±× ³»¿ëÀº ÀǿܷΠ°£´ÜÇÕ´Ï´Ù. ƯÁ¤ ascx ÄÁÆ®·ÑÀÇ ¼Ó¼º¿¡ µ¿ÀûÀ¸·Î µ¥ÀÌÅÍ(TitlesManager°¡ ³Ñ°ÜÁִ å ¸ñ·Ï µ¥ÀÌÅÍ-DataTable)¸¦ Ãß°¡ÇÑ µÚ, ±×¸¦ ¹ÙÀεùÇÑ User ControlÀ» ¹ÝȯÇÏ´Â ¿ªÇÒÀ» Á¦°øÇÏ´Â °ÍÀÔ´Ï´Ù. ±âº» ¿¹Á¦¿¡¼­´Â µ¿ÀûÀ¸·Î User Control¿¡ µ¥ÀÌÅ͸¦ °Ç³×ÁÖ±â À§Çؼ­ ¸®Ç÷º¼Ç ±â¼úÀ» ÀÌ¿ëÇϰí ÀÖÁö¸¸, ÀÌ´Â Â÷ÈÄ ÀÎÅÍÆäÀ̽º¸¦ ÀÌ¿ëÇÏ´Â ¹æ½ÄÀ¸·Î ¹Ù²Ù¾î ¼º´ÉÀûÀÎ Çâ»óÀ» ²ÒÇÒ ¼öµµ ÀÖÀ» °ÍÀÔ´Ï´Ù.

¾î·Æ´Ù±¸¿ä? ¸»·Î¸¸ ¼³¸íÇÏ¸é º¹ÀâÇÑ °¨ÀÌ ¾øÁö ¾ÊÀ¸´Ï Á÷Á¢ ¼Ò½º¸¦ º¸¸é¼­ ÀÌÇØÇØ º¸µµ·Ï ÇϽÃÁÒ. ¿ì¼± TitlesManager.cs Ŭ·¡½ººÎÅÍ »ìÆìº¸µµ·Ï ÇϰڽÀ´Ï´Ù.

TitlesManager.cs
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
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>
/// TitlesManagerÀÇ ¿ä¾à ¼³¸íÀÔ´Ï´Ù.
/// </summary>
public class TitlesManager
{
    private DataTable GetTitles()
    {
        SqlConnection con = new SqlConnection();
        con.ConnectionString = "server=(local);database=pubs;uid=**;pwd=**";
        string sql = "Select title from Titles";
        SqlCommand cmd = new SqlCommand(sql, con);
        SqlDataAdapter adapter = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();

        adapter.Fill(ds);
        return ds.Tables[0];
    }

    public UserControl GetTitlesRenderControl()
    {
        DataTable titles = this.GetTitles();

        if (titles.Rows.Count > 0)
            return ViewManager.GetViewControl("~/Template/View.ascx", titles);
        else
            return ViewManager.GetViewControl("~/Template/NoView.ascx", null);
    }
}

TitlesManager Ŭ·¡½º´Â ¿ì¼± GetTitles()¶ó´Â ¸Þ¼­µå¸¦ °¡Áö°í ÀÖ½À´Ï´Ù. ÀÌ´Â µ¥ÀÌÅͺ£À̽º·ÎºÎÅÍ Ã¥ ¸ñ·Ï µ¥ÀÌÅ͸¦ °¡Á®¿Í¼­ ±×¸¦ DataTable Çü½ÄÀ¸·Î ¹ÝȯÇÏ´Â ¸Þ¼­µåÀÔ´Ï´Ù. n-Tier ±¸Á¶·Î ¼³°èµÇ¾ú´Ù¸é, »ç½Ç»ó ÀÌ ¸Þ¼­µå´Â TitlesManager Ŭ·¡½º°¡ ¾Æ´Ñ Data Access Component ÂÊ¿¡ ³õ¿©Á®¾ß ÇϰڽÀ´Ï´Ù¸¸, ¿©±â¼­´Â µ¥¸ðÀÇ ¸ñÀûÀ¸·Î Äڵ带 ¿©±â¿¡ Á÷Á¢ ÀÛ¼ºÇØ º¸¾Ò½À´Ï´Ù. ¸¸ÀÏ, ¿©·¯ºÐÀÇ ÇÁ·ÎÁ§Æ®¿¡ °³¹ß ÇÁ·¹ÀÓ¿öÅ©°¡ µµÀԵǾî ÀÖ°í, ÀÌ¹Ì Business Logic °èÃþ°ú Data Access °èÃþÀÌ Á¸ÀçÇÑ´Ù¸é ÀÌ ¸Þ¼­µå´Â ±× ¾ÈÂÊ¿¡ ÀÛ¼ºµÇ¾î¾ß ÇÒ °ÍÀÔ´Ï´Ù.

TitlesManager Ŭ·¡½ºÀÇ ÇÙ½É ¸Þ¼­µå´Â »ç½Ç GetTitlesRenderControl() ÀÔ´Ï´Ù. ÀÌ ¸Þ¼­µå°¡ ¹Ù·Î ViewManager Ŭ·¡½º¸¦ »ç¿ëÇØ¼­! µ¿ÀûÀ¸·Î ÇÊ¿äÇÑ User ControlÀ» ¾ò¾î³»´Â ¸Þ¼­µåÀ̴ϱî¿ä. ÇØ¼­, ¼Ò½º¸¦ º¸½Ã¸é ÀÌ´Â ¿ì¼± GetTitles() ¸Þ¼­µå¸¦ ÀÌ¿ëÇØ¼­ ÇÊ¿äÇÑ DataTableÀ» ¾ò¾î³»°í ÀÖÀ¸¸ç, ±× °¡Á®¿Â µ¥ÀÌÅͰ¡ Á¸ÀçÇÑ´Ù¸é(ÇÑ °³ ÀÌ»óÀÇ Row¸¦ °¡Áø´Ù¸é) View.ascx¶õ ÅÛÇø´À», µ¥ÀÌÅͰ¡ Á¸ÀçÇÏÁö ¾Ê´Â´Ù¸é NoView.ascx¶õ ÅÛÇø´À» µ¿ÀûÀ¸·Î ¾ò¾î¿Í ¹ÝȯÇÏ´Â °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù(View.ascx¶õ ÅÛÇø´À» »ç¿ëÇÏ´Â °æ¿ì¿¡´Â ¹ÙÀεù µ¥ÀÌÅ͸¦ ÇÊ¿ä·Î ÇϹǷÎ, DataTable °³Ã¼¸¦ ÀÎÀÚ·Î ³Ñ°ÜÁÖ¾î¾ß ÇÕ´Ï´Ù).

´ë·«ÀûÀÎ TitlesManager Ŭ·¡½ºÀÇ ¿ªÇÒÀÌ ÀÌÇØ°¡ µÇ½Ã³ª¿ä? ±×·¸½À´Ï´Ù. º° °Í ¾ø½À´Ï´Ù. Äõ¸® °á°ú µ¥ÀÌÅͰ¡ Á¸ÀçÇϸé View.ascx¸¦, µ¥ÀÌÅͰ¡ ¾øÀ¸¸é NoView.ascx¸¦ ¾ò¾î¿À´Â ViewManager Ŭ·¡½ºÀÇ GetViewControl ¸Þ¼­µå¸¦ È£ÃâÇÏ´Â °ÍÀÌ ÀüºÎÀ̴ϱî¿ä.

±×·¸±â¿¡, ¿©±â¼­ Áß¿äÇÑ °ÍÀº ¹«¾ùº¸´Ùµµ ViewManager.GetViewControl() ¶ó´Â °ÍÀ» ¿©·¯ºÐÀº ¹øÂ½! ´«Ä¡ ä¼ÌÀ» °ÍÀÔ´Ï´Ù. ½ÇÁ¦·Î ascx ÅÛÇø´°ú ÁÖ¾îÁø µ¥ÀÌÅ͸¦ ÀÌ¿ëÇØ µ¿ÀûÀ¸·Î User ControlÀ» »ý¼ºÇÏ´Â ÇÙ½É ¿ªÇÒÀ» Çϴ ģ±¸°¡ ¹Ù·Î ViewManager.GetViewControl()À̴ϱî¿ä. ±×·¸´Ù¸é, ÀÌÁ¦ ViewManager Ŭ·¡½ºÀÇ Äڵ带 Çѹø »ìÆìº¸µµ·Ï ÇϰڽÀ´Ï´Ù.

ViewManager.cs
using System;
using System.Web;
using System.Web.UI;
using System.IO;
using System.Reflection;

public class ViewManager
{
    public static UserControl GetViewControl(string path, object data)
    {
        Page page = new Page();
        UserControl viewControl = (UserControl) page.LoadControl(path);

        if (data != null)
        {
            Type viewControlType = viewControl.GetType();
            PropertyInfo prop = viewControlType.GetProperty("Data");

            if (prop != null)
            {
                prop.SetValue(viewControl, data, null);
            }
            else
            {
                throw new Exception(path + "´Â Data ¼Ó¼ºÀ» °¡Áö°í ÀÖÁö ¾Ê½À´Ï´Ù");
            }
        }

        return viewControl;
    }
}

ViewManager Ŭ·¡½ºÀÇ ÇÙ½ÉÀº GetViewControl¶ó´Â ¸Þ¼­µåÀÔ´Ï´Ù. ÀÌ´Â ÁÖ¾îÁø ascx ÆÄÀϸí°ú ¹ÙÀεù µ¥ÀÌÅ͸¦ ÀÎÀÚ·Î ¹Þ¾Æ¼­ ±×¸¦ ÀÌ¿ëÇØ µ¿ÀûÀ¸·Î User ControlÀ» »ý¼ºÇÏ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù. ÇØ¼­, óÀ½ µÎ ÁÙÀÇ ÄÚµå´Â ÀÏ´Ü ÁöÁ¤µÈ °æ·ÎÀÇ ascx ÆÄÀÏÀ» User Control·Î ¾ò¾î³»´Â ÀÛ¾÷À» ¼öÇàÇϰí ÀÖ¾î¿ä.

Page page = new Page();
UserControl viewControl = (UserControl) page.LoadControl(path);

¸¸ÀÏ, ÀÌ·¸°Ô ¾ò¾î¿Â User ControlÀÌ Á¤ÀûÀÎ µ¥ÀÌÅ͸¸À» °¡Áø´Ù¸é, ÇöÀçÀÇ viewControl °³Ã¼¸¦ ±×´ë·Î ¹ÝÈ¯ÇØµµ ¹«°üÇϰÚÁö¸¸, °íÀÛ ±×·± ÀÛ¾÷À» ÇÏ·ÁÇß´Ù¸é ±»ÀÌ ÀÌ·¸°Ô º¹ÀâÇÏ°Ô ViewManager¸¦ Á¦ÀÛÇÒ ÇÊ¿äÁ¶Â÷ ¾ø¾úÀ» °Ì´Ï´Ù. ViewManager°¡ ÇÊ¿äÇÑ ÀÌÀ¯´Â ¹Ù·Î µ¿ÀûÀ¸·Î User ControlÀÇ ¼Ó¼ºÀ» ¼³Á¤ÇÒ Çʿ䰡 Àֱ⠶§¹®À̴ϱî¿ä.

ÄÚµå´Â page.LoadControl() ¸Þ¼­µå¸¦ ÀÌ¿ëÇØ¼­ UserControl °³Ã¼¸¦ ¾ò¾î¿À±ä ÇßÀ¸³ª, ¹®Á¦´Â ÀÌ »óÅÂ·Î´Â ÇØ´ç UserControlÀÌ Data ¶ó´Â ¼Ó¼ºÀ» °®´ÂÁö ¾î¶²Áö ¾Ë ¼ö°¡ ¾ø´Ù´Â °ÍÀÔ´Ï´Ù. UserControl Çü½ÄÀÇ .NET Ŭ·¡½º´Â Data¶ó´Â Çʵ带 ±âº»ÀûÀ¸·Î °¡Áö°í ÀÖÁö ¾ÊÀ¸´Ï±î¿ä.

ÇÏÁö¸¸, ¿ì¸®°¡ µ¿ÀûÀ¸·Î ·ÎµåÇϰíÀÚ ÇÏ´Â View.ascx ´Â ºÐ¸í Data¶ó´Â °ø°³ ¼Ó¼ºÀ» °¡Áö°í ÀÖ½À´Ï´Ù. ±×·¸´Ù¸é, ¾î¶»°Ô ÇÁ·Î±×·¡¹ÖÀûÀ¸·Î ÀÌ °³Ã¼ÀÇ Data Çʵ带 Á¢±ÙÇÒ ¼ö ÀÖÀ»±î¿ä?

¿ì¸®°¡ À§¿¡¼­ ÀÛ¼ºÇسõÀº(À§¿¡¼­ ¼Ò½º¸¦ º¸¿©µå·È¾úÁÒ?) View.ascxÀÇ ¼Ò½º¸¦ ´Ù½Ã±Ý »ìÆìº¸¸é ±×´Â Data¶ó´Â object Çü½ÄÀÇ ¼Ó¼ºÀ» °¡Áö°í ÀÖÀ½À» ¾Ë ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í, ÄÁÆ®·ÑÀÇ Page_Load À̺¥Æ® ½Ã¿¡´Â ±× Data¸¦ °¡Áö°í µ¥ÀÌÅÍ ¹ÙÀεùÀ» ½ÃµµÇÔÀ» ¾Ë ¼ö ÀÖÁÒ. ÀÌ´Â ¿ì¸®³¢¸® »çÀü Á¤ÀÇÇØ ³õÀº ±ÔÄ¢ÀÔ´Ï´Ù. Áï,

"¸ðµç ascx ÅÛÇø´µéÀº Data¶ó´Â °ø°³ ¼Ó¼ºÀ» °¡Áö¸ç, µ¥ÀÌÅÍ ¹ÙÀεùÀº ±× µ¥ÀÌÅ͸¦ °¡Áö°í ÀÌ·ç¾îÁø´Ù"

°¡ ¿ì¸®³¢¸® ¾à¼ÓÇØ³õÀº ±ÔÄ¢À̶ó´Â °ÍÀÌÁÒ. ´Ù½Ã ¸»Çؼ­, ¿ì¸®°¡ ÅÛÇø´À¸·Î ÀÌ¿ëÇÒ ¸ðµç ascxµéÀº Data¶ó´Â °ø°³ ¼Ó¼ºÀ» °¡Á®¾ß¸¸ ÇÕ´Ï´Ù. Çö½ÇÀûÀ¸·Î À̾߱âÇÏÀÚ¸é, ÀÌ ±ÔÄ¢Àº ÇÁ·ÎÁ§Æ®ÀÇ Å¬·¡½º ¼³°è Ç¥Áع®¼­¿¡ ±â·ÏµÇ¾î ÀÖ¾î¾ß ÇÒ °ÍÀ̰í, °³¹ßÀڵ鿡°Ô »çÀü¿¡ ¼÷Áö½ÃÄѾ߸¸ ÇÏ´Â ºÎºÐÀ̾î¾ß ÇÒ °ÍÀÔ´Ï´Ù.

±×·¸½À´Ï´Ù. ¹æ¹ýÀº Å©°Ô µÎ °¡Áö°¡ ÀÖ½À´Ï´Ù. Çϳª´Â Data¶ó´Â ¼Ó¼ºÀ» °®´Â ÀÎÅÍÆäÀ̽º¸¦ ÀÛ¼ºÇؼ­ View.ascx Ŭ·¡½º°¡ ±× ÀÎÅÍÆäÀ̽º(¿¹¸¦ µé¸é, IcommonUC¶õ À̸§À¸·Î)¸¦ ±¸ÇöÇϵµ·Ï Çϰí, ´ÙÀ½°ú °°ÀÌ Äڵ带 ÀÛ¼ºÇÏ´Â ¹æ¹ýÀÌ ÀÖ°ÚÁÒ?

Page page = new Page();
ICommonUC viewControl = (ICommonUC)page.LoadControl(path);

»ç½Ç, ÀÌ ¹æ¹ýÀÌ Á¦°¡ °­Á¿¡¼­ ¼³¸íÇÏ·Á´Â ¸®Ç÷º¼Ç ¹æ¹ýº¸´Ù ÈξÀ ´õ È¿°úÀûÀÎ ¹æ¹ýÀÓ¿¡´Â Ʋ¸²ÀÌ ¾ø½À´Ï´Ù. ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÑ´Ù¸é À§ÀÇ GetViewControl() ¸Þ¼­µåµµ ´ÙÀ½°ú °°ÀÌ ¸Å¿ì!! °£´ÜÇØÁú ¼ö ÀÖÀ»Å״ϱî¿ä.

public static UserControl GetViewControlwInterface(string path, object data)
{
    Page page = new Page();
    UserControl ctl = (UserControl)page.LoadControl(path);
    ICommonUC viewControl = ctl as ICommonUC;

    if(viewControl != null)
        viewControl.Data = data;

    return ctl;
}
// ¿ä ºÎºÐ ÄÚµå´Â À¯ °æ»ó ¼ö¼®ÀÌ °£¼·Çß´Ù´Â ÈĹ®ÀÌ µ¹°í ÀÖ½À´Ï´Ù.

»ç½Ç, °á°ú·ÐÀûÀ¸·Î´Â »ó±â¿Í °°ÀÌ ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ´Â °ÍÀ» °­·ÂÈ÷ ÃßõÇÕ´Ï´Ù. ÇÏÁö¸¸, ÀÌ °­Á´ ¸®Ç÷º¼ÇÀ» ÀÌ¿ëÇØ¼­ ¼Ó¼ºÀ» ¼³Á¤ÇÏ´Â ³»¿ëÀ» º¸¿©µå¸®°í ÀÖ½À´Ï´Ù. ´Ù½Ã º¸¿©µå¸®ÀÚ¸é,

Type viewControlType = viewControl.GetType();
PropertyInfo prop = viewControlType.GetProperty("Data");

if (prop != null)
{
    prop.SetValue(viewControl, data, null);
}

°¡ ¹Ù·Î ±×·¯ÇÑ ÄÚµåÀÌÁÒ. ¸®Ç÷º¼ÇÀ» ÀÌ¿ëÇØ¼­ ÇöÀç °³Ã¼ Çü½ÄÀÌ Data¶ó´Â ¼Ó¼ºÀ» °®´ÂÁö ¿©ºÎ¸¦ °Ë»çÇϰí, ¸¸ÀÏ ÇØ´ç ¼Ó¼ºÀÌ Á¸ÀçÇÑ´Ù¸é ±× ¼Ó¼º¿¡ µ¥ÀÌÅÍ(¿ì¸®ÀÇ °æ¿ì Ã¥ ¸ñ·Ï DataTable)À» ¹Ð¾î³Ö´Â °ÍÀÔ´Ï´Ù.

¸®Ç÷º¼ÇÀ» ÀÌ¿ëÇÏ´Â ¹æ½ÄÀº ¼º´ÉÀûÀ¸·Î ±×´ÙÁö ÁÁÁö ¾Ê±â¿¡ Å©°Ô ±ÇÀåÇÏÁö´Â ¾Ê½À´Ï´Ù¸¸, Á¦°¡ Âü°íÇÑ ¿ø·¡ÀÇ Æ÷½ºÆ® ±ÛÀÌ ÀÌ ¹æ½ÄÀ» »ç¿ëÇ߱⿡ Àúµµ ÀÌ ¹æ½ÄÀ¸·Î ±ÛÀ» ÀÛ¼ºÇß½À´Ï´Ù. °³ÀÎÀûÀ¸·Î´Â ¸®Ç÷º¼Çº¸´Ù´Â ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ´Â ÂÊÀ» ±ÇÀåÇÏ°í ½Í½À´Ï´Ù. ^^;

ÀÚ. ÀÌÁ¦ TitlesManager¿Í ViewManager°¡ ¸ðµÎ ¿Ï¼ºµÇ¾ú³×¿ä. ViewManager´Â ´Ù¸¥ °÷¿¡¼­µµ µÎ°íµÎ°í Àç»ç¿ëÀÌ °¡´ÉÇÑ µ¶¸³ÀûÀÎ ¸ðµâÀÔ´Ï´Ù. ¸¸ÀÏ, ¿©·¯ºÐÀÌ Ã¥ ¸ñ·ÏÀÌ ¾Æ´Ñ °í°´ µ¥ÀÌÅÍ ¸ñ·ÏÀ» ´Ù·ç°í ½Í´Ù¸é, CustomerManager¿Í °°Àº Ŭ·¡½º¸¦ ¸¸µé°í (ÄÚµå´Â TitlesManager¿Í À¯»çÇϰÚÁÒ?) ³»ºÎÀûÀ¸·Î ViewManager¸¦ »ç¿ëÇÏ½Ã¸é µÉ °ÍÀÔ´Ï´Ù. ^^

ÀÚ. ±×·³ ÀÌÁ¦ À̸¦ ÀÌ¿ëÇÏ´Â ASPX ÆäÀÌÁö¸¦ ¸¸µé¾îºÁ¾ß °ÚÁÒ? Àú´Â default.aspx ÆäÀÌÁö¿¡ Label ÄÁÆ®·ÑÀ» Çϳª ¿Ã·Á³õ°í(±»ÀÌ LabelÀÏ ÀÌÀ¯´Â ¾øÁö¸¸), ÄÚµå ºñÇÏÀε忡´Â ´ÙÀ½°ú °°ÀÌ Äڵ带 ÀÛ¼ºÇØ º¸¾Ò½À´Ï´Ù.

default.aspx.cs
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        UserControl ctl = (new TitlesManager()).GetTitlesRenderControl();
        lblData.Controls.Add(ctl);
    }
}

°£´ÜÇÏÁÒ? ´ÙÀ½Àº Àüü ¼Ò½º°¡ µ¿ÀÛÇÏ¿© ³ª¿Â °á°úÈ­¸éÀÔ´Ï´Ù.(Àú´Â ¾à°£ÀÇ µðÀÚÀÎÀ» ÀÔÇôºÃ½À´Ï´Ù. ±×·¡ºÁ¾ß Å« Â÷ÀÌ´Â ¾øÁö¸¸ -_-)

³ª¸§´ë·Î ¸ÚÁöÁö ¾Ê³ª¿ä? ¤¾¤¾

À̰ÍÀÌ À̹ø °­Á¿¡¼­ ÀüÇÏ°í ½Í¾ú´ø ³»¿ëÀÔ´Ï´Ù. »ç½Ç, Á¦´ë·Î ÀÌÇØÇÏ·Á¸é Àüü ¼Ò½º¸¦ Çѹø µ¹·Áº¸°í µð¹ö±ë Àâ°í, ¼Ò½º¸¦ µû¶ó°¡¸é¼­ È®ÀÎÇÏ´Â°Ô ´õ ÁÁ±ä ÇÏÁÒ. ÇØ¼­, °­Á ÇÏ´Ü¿¡¼­´Â Àüü ¼Ò½º¸¦ ´Ù¿î·Îµå ÇÒ ¼ö ÀÖµµ·Ï ÁغñÇØ µÎ¾ú½À´Ï´Ù. ÀüüÀûÀ¸·Î µ¹¾Æ°¡´Â ¹æ½ÄÀ» È®ÀÎÇÏ½Ã°í ³ª¸é ÀÌ ¹æ½ÄÀÌ ¸¾¿¡ µå½Ã´Â ºÐµéµµ Á¶±Ý ÀÖÁö ¾ÊÀ»±î »ý°¢ÇØ º¾´Ï´Ù.

±×¸®°í, Ãß°¡ÀûÀ¸·Î ViewManager Ŭ·¡½º¸¦ º¸¸é User ControlÀ» Á÷Á¢ÀûÀ¸·Î ¹ÝȯÇÏÁö ¾Ê°í, ±× User ControlÀÇ ³»¿ëÀ» HTML ¹®ÀÚ¿­·Î ·»´õÇÏ¿© ¹ÝȯÇÏ´Â ¸Þ¼­µåµµ µé¾îÀÖ´Â °ÍÀ» º¸½Ç ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ASP.NET ¾ÖÇø®ÄÉÀ̼ǿ¡¼­´Â ÀÌ ¸Þ¼­µå°¡ ±×´ÙÁö À¯¿ëÇÏÁö ¾ÊÀ» ¼ö ÀÖÁö¸¸, AJAX ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÑ´Ù¸é ³ª¸§´ë·Î ¾µ¸¸ÇÏ´Ù°í ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±× ¸Þ¼­µå¸¦ À¥ ¼­ºñ½ºÀÇ ¸Þ¼­µå·Î »© ³õÀ¸¸é, Ŭ¶óÀÌ¾ðÆ® Ãø¿¡¼­ ¼Õ½±°Ô ¸ñ·Ï µ¥ÀÌÆ® Ãâ·ÂÀ» ¾ò¾î¿Í È­¸é¿¡ ¹Ý¿µÇÒ ¼ö ÀÖÀ»Å״ϱî¿ä ^^;

±×¸® ¾î·Á¿î ³»¿ëÀº ¾Æ´Ñµ¥, Á¦°¡ ¼³¸íÀ» °£°áÇÏ°Ô ÇÏÁö ¸øÇؼ­ ¿ÀÈ÷·Á ¿©·¯ºÐÀ» ¾î·Æ°Ô ¸¸µç °ÍÀº ¾Æ´ÑÁö °ÆÁ¤µË´Ï´Ù. ÇÏÁö¸¸, ¸¾¿¡´Â µå¼ÌÁÒ?

°¨»çÇÕ´Ï´Ù. ±×·³ ¶Ç ´ÙÀ½ °­Á¿¡¼­ ã¾ÆºÉ²²¿ä ^^

À̹ø °­Á¿¡ ¾²ÀÎ ¼Ò½º(ÇÁ·ÎÁ§Æ® Àüü)¸¦ ¿øÇϽøé Ŭ¸¯Çϼ¼¿ä ^^

 

°­Á ¸ñ·ÏÀ¸·Î..