lecture Home > ASP Tips > ¼Û±ºÀÇ °í±Þ Script ±â¼ú

HTCs ÀÛ¼º ¹× ASP.NET Custom ÄÁÆ®·Ñ ¿¬µ¿

   °­Á ÃÖÃÊ ÀÛ¼ºÀÏ : 2006³â 05¿ù 27ÀÏ
   °­Á ÃÖÁ¾ ¼öÁ¤ÀÏ : 2006³â 05¿ù 29ÀÏ

   °­Á ÀÐÀ½ ¼ö : ȸ

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

   °­Á Á¦¸ñ : HTC ÀÛ¼º ¹× ASP.NET Custom ÄÁÆ®·Ñ ¿¬µ¿ 

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

www.egocube.pe.kr »çÀÌÆ®¸¦ ¿î¿µÇϰí ÀÖ´Â ¼Û¿ø¼® ±ºÀÌ º¸³»ÁØ °­ÁÂÀÔ´Ï´Ù.
Âü°í·Î, ¼Û±ºÀº Microsoft MVP À̱⵵ ÇÕ´Ï´Ù. ^^
À̹ø¿¡´Â ASP.NET ÄÁÆ®·Ñ°ú HTC¸¦ ¹ö¹«¸° ¹æ¹ýÀ» ¼Ò°³Çϰí ÀÖ½À´Ï´Ù.



Àç¹ÌÀÖ´Â ÀÚ¹Ù½ºÅ©¸³Æ®, HTCs ÀÇ ÀÛ¼º ¹× ASP .NET À¥ »ç¿ëÀÚ ÁöÁ¤ ÄÁÆ®·Ñ ¿¬µ¿

Áö±Ý±îÁö ¿ì¸®µéÀº µÎ Â÷·Ê¿¡ °ÉÄ£ ³íÀǸ¦ ÅëÇØ¼­ °£´ÜÇϰԳª¸¶ HTCs ¶õ ¾î¶°ÇÑ ±â¼úÀÎÁö, ±×¸®°í ±¸Ã¼ÀûÀ¸·Î ¾î¶»°Ô Ȱ¿ëµÉ ¼ö ÀÖ´Â ±â¼úÀÎÁö¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸¾ÒÀ¸¸ç ºñ±³Àû °£´ÜÇÑ ¼öÁØÀÇ HTCs ¸¦ Á÷Á¢ ÀÛ¼ºÇغ¸±âµµ Çß´Ù. º»¹®¿¡¼­´Â ±â¼úÀûÀÎ °üÁ¡¿¡¼­ HTCs ¸¦ ÀÛ¼ºÇÏ´Â ¹æ¹ý¿¡ ´ëÇÏ¿© Á¶±Ý ´õ ³íÀǸ¦ ÁøÇàÇØº¸°í ±×·¯ÇÑ °úÁ¤ÀÇ °á°ú·Î¼­ ¾ò¾îÁö´Â HTCs ¸¦ ASP .NET À¥ »ç¿ëÀÚ ÁöÁ¤ ÄÁÆ®·Ñ°ú ¿¬µ¿ÇÏ´Â ±¸Ã¼ÀûÀÎ »ç·Ê¸¦ »ìÆìº¸°íÀÚ ÇÑ´Ù. ¸¸¾à ¿©·¯ºÐµéÀÌ Àü¹®ÀûÀÎ ASP .NET °³¹ßÀÚ°¡ ¾Æ´Ï¶ó´ø°¡ ASP .NET À¥ »ç¿ëÀÚ ÁöÁ¤ ÄÁÆ®·ÑÀ» Á¦ÀÛÇØº» °æÇèÀÌ ¾ø°Å³ª ASP .NET À» ÀÌÁ¦ ¸· ½ÃÀÛÇϰíÀÚ °èȹÁßÀÎ °³¹ßÀÚ¶ó¸é, ´Ù¼Ò ºÎÁ·Çϳª¸¶ º»¹®¿¡¼­ Á¦½ÃµÇ´Â ³íÀǸ¦ ÅëÇØ¼­ ±× °­·ÂÇÑ ±â´ÉÀ» ÀÏºÎ¶óµµ Á¢Çغ¼ ¼ö ÀÖ´Â ÀǹÌÀÖ´Â ±âȸ°¡ µÉ ¼ö ÀÖ¾úÀ¸¸é ÇÑ´Ù.

¸ÕÀú »ìÆìº¸°íÀÚ ÇÏ´Â ºÎºÐÀº °ú¿¬ Áö³­±Û¿¡¼­ ¿ì¸®µéÀÌ °í¹ÎÇϸç ÀÛ¼ºÇß´ø HTCs °¡ °¡Áö°í ÀÖ´Â ¹®Á¦Á¡Àº ÀüÇô ¾ø´Â°¡ ÇÏ´Â Á¡ÀÌ´Ù. ÀÌ HTCs ÀÇ ±¸Ã¼ÀûÀÎ ¸ñÇ¥´Â ÃÖÁ¾ »ç¿ëÀÚ°¡ ½Ç¼ö ¶Ç´Â °íÀÇ·Î ¼ýÀÚ°ª ÀÌ¿ÜÀÇ µ¥ÀÌÅ͸¦ ÀÔ·ÂÇÏ´Â °ÍÀ» ¹æÁöÇÏ´Â °ÍÀ¸·Î, ½ÇÁ¦·Îµµ ±× ±â´ë¿¡ ºÎÇÕÇÏ¿© ¿¹»óÇÑ ¹Ù¿Í °°ÀÌ Àß µ¿ÀÛÇÑ´Ù´Â »ç½ÇÀ» ÀÌ¹Ì È®ÀÎÇÑ ¹Ù ÀÖ´Ù. ±×·¯³ª ÀÌ HTCs ¿¡´Â ºñ·Ï °£´ÜÇϱä ÇÏÁö¸¸ ¹Ý¸é ¸Å¿ì Ä¡¸íÀûÀÎ ´ÜÁ¡ÀÌ ÇÑ °¡Áö Á¸ÀçÇÑ´Ù. Áï ÃÖÁ¾ »ç¿ëÀÚ°¡ ÀÔ·ÂÇÏ´Â µ¥ÀÌÅ͸¦ ´ë»óÀ¸·Î´Â »ó´ëÀûÀ¸·Î ¾ö°ÝÇÑ À¯È¿¼º °Ë»ç¸¦ ¼öÇàÇÏÁö¸¸, °³¹ßÀÚ°¡ ÀúÁö¸£´Â ½Ç¼ö¿¡ ´ëÇØ¼­´Â °ÅÀÇ ¿Ïº®ÇÏ°Ô ¹«¹æºñ »óŶó´Â Á¡ÀÌ´Ù. °á°úÀûÀ¸·Î ÀÌ·¯ÇÑ Ä¡¸íÀûÀÎ ´ÜÁ¡À» °³¼±ÇÏÁö ¸øÇÑ´Ù¸é ÀÌ HTCs ´Â Àç»ç¿ë¼ºÀ̶ó´Â ºÎºÐ¿¡ À־ ´ÜÀûÀ¸·Î ³·Àº Æò°¡¸¦ ¹ÞÀ» ¼ö ¹Û¿¡ ¾øÀ» °ÍÀÌ´Ù. °£´ÜÇÏÁö¸¸ ´ÙÀ½ÀÇ INPUT ÅÂ±× ¿¹Á¦´Â ¹Ù·Î ÀÌ·¯ÇÑ ¹®Á¦Á¡À» Àû³ª¶óÇÏ°Ô º¸¿©ÁÖ°í ÀÖ´Ù.

     

<input type="text" id="HTCs1" style="behavior: url(asp_0017_01.htc);">

<script language="JavaScript" type="text/javascript">
<!--
document.getElementById("HTCs1").value = "ABC";
//-->
</script>
´ë¹ø¿¡ ¾Ë ¼ö ÀÖ°ÚÁö¸¸ ÀÌ ¿¹Á¦¿¡ »ç¿ëµÈ ÀÚ¹Ù½ºÅ©¸³Æ® ÄÚµåÀÇ ¼öÁØÀ̶ó´Â °ÍÀº ƯÀÌÇϱâ´Â Ä¿³ç ½Ç¹«¿¡¼­´Â µÇ·Á Áú·Á¹ö¸± Á¤µµ·Î ºó¹øÇÏ°Ô Á¢ÇÏ°Ô µÇ´Â Æò¹üÇÑ ÄÚµå·Î¼­ ÇÊÀÚ°¡ ³»¿ëÀ» ¼³¸íÇÑ´Ù´Â °ÍÀÌ ¹«¾ÈÇÒ Á¤µµÀÇ Äڵ忡 ºÒ°úÇÑ °ÍÀÌ´Ù. ±×·³¿¡µµ ºÒ±¸Çϰí HTCs ÀÇ ±â´ÉÀº ³Ê¹«³ªµµ ½±°Ô ¹«³ÊÁ® ¹ö·È´Ù. °á°úÀûÀ¸·Î ÀÌ·¯ÇÑ »ç·Ê´Â ¿ì¸®µéÀÌ ÀÛ¼ºÇÑ HTCs °¡ ±×´ÙÁö Ä¡¹ÐÇÑ ¼³°è¸¦ ¹ÙÅÁÀ¸·Î ÀÛ¼ºµÈ °ÍÀº ¾Æ´Ï¶ó´Â ¹ÝÁõÀÎ ¼ÀÀÌ´Ù. ±×¸®°í ´ÙÀ½ÀÇ HTML ÄÚµå ¿ª½Ãµµ ÇöÀç ÀÌ HTCs °¡ °¡Áö°í ÀÖ´Â ¹®Á¦Á¡µé ÁßÀÇ Çϳª¸¦ ¸íÈ®ÇÏ°Ô µå·¯³»ÁÖ´Â ¶Ç ÇϳªÀÇ »ç·Ê´Ù. ³Ê¹«³ªµµ ¾îÀ̾ø´Â ´Ü¼øÇÑ Á¶ÀÛ¸¸À¸·Îµµ ±×³É ³Ñ¾î°¡±â¿¡´Â °ï¶õÇÑ ¹®Á¦Á¡ÀÌ ³ëÃâµÈ´Ù´Â »ç½ÇÀ» ½±°Ô ÀÎÁöÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

     

<input type="text" id="HTCs2" style="behavior: url(asp_0017_01.htc);" defaultValue="ABC">
±×·¸´Ù¸é ÀÌ µÎ °¡Áö ¹®Á¦Á¡À» ÇØ°áÇÏ´Â µ¥¿¡¼­ºÎÅÍ º»°ÝÀûÀÎ ³íÀǸ¦ ½ÃÀÛÇØº¸µµ·Ï ÇÏÀÚ. ±×·±µ¥ ÇÑ °¡Áö ¾ÈŸ±î¿î »ç½ÇÀº ù ¹øÂ° ¹®Á¦Á¡ÀÇ °æ¿ì¿¡´Â ¹®Á¦ÀÇ ¹ß»ý ±× ÀÚü¸¦ ¹æÁöÇÒ ¼ö ÀÖ´Â ±Ùº»ÀûÀÎ ÇØ°á ¹æ¹ýÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù´Â Á¡ÀÌ´Ù. Àû¾îµµ ÇÊÀÚ°¡ Áö´Ñ Áö½ÄÀ¸·Î´Â º°´Ù¸¥ ¹æ¹ýÀ» ãÀ» ¼ö°¡ ¾ø¾ú´Ù. ÀÏ´Ü ¼Õ½±°Ô °í·ÁÇØ º¼ ¼ö ÀÖ´Â ¹æ¹ý¿¡´Â ±âÁ¸ÀÇ HTCs ¿¡ onchange À̺¥Æ® Çîµé·¯¸¦ Ãß°¡ÇÏ´Â ¹æ¹ýÀÌ ÀÖÀ» °ÍÀÌ´Ù. ±×·¯³ª ÀÚ¹Ù½ºÅ©¸³Æ®¸¦ »ç¿ëÇÏ¿© µ¥ÀÌÅ͸¦ º¯°æÇÏ´Â °æ¿ì¿¡´Â ÀÌ À̺¥Æ® ÀÚü°¡ ¹ß»ýÇÏÁö ¾Ê´Â´Ù. µû¶ó¼­ ÀÌ ¹æ¹ýÀº °ÅÀÇ ¹«¿ëÁö¹°À̳ª ¸¶Âú°¡ÁöÀÌ¸ç ±×·¸´Ù°í º°´Ù¸¥ ´ë¾Èµµ Á¸ÀçÇÏÁö ¾Ê´Â´Ù. °á±¹ ÇÊÀÚ°¡ ¾ò¾î³¾ ¼ö ÀÖ¾ú´ø ÃÖ¼±ÀÇ °á·ÐÀº µ¥ÀÌÅÍ À¯È¿¼º °Ë»ç¸¦ À§ÇÑ ÈÄó¸® ÀÛ¾÷ÀÇ ÀÏȯÀ¸·Î¼­ »ç¿ëµÉ ¼ö ÀÖ´Â, ±×¸®°í ÀÔ·ÂµÈ µ¥ÀÌÅÍÀÇ À¯È¿¼ºÀ» °Ë»çÇØÁÖ°í °æ¿ì¿¡ µû¶ó¼­´Â º¸Á¤ ÀÛ¾÷±îÁö ó¸®ÇØÁÖ´Â ÇÔ¼ö¸¦ ÀϰüÀûÀÎ ÇüÅ·ΠÁ¦°øÇØÁÖ´Â ¾î´À Á¤µµ ¼Ò±ØÀûÀÎ ¹æ¹ý»ÓÀ̾ú´Ù. À̸¦Å×¸é »ç¿ëÀÚÀÇ µ¥ÀÌÅÍ ÀԷ°ú °ü·ÃÀ» °¡Áö°í ÀÖ´Â ¸ðµç Á¾·ùÀÇ HTCs ¿¡ ¹Ì¸® ±ÔÁ¤ÇÑ À̸§À¸·Î ÀÛ¼ºµÈ ÇϳªÀÇ ÇÔ¼ö, °¡·É isValidate() ¿Í °°Àº ÇÔ¼ö¸¦ Á¦°øÇϰí ÀÌ HTCs µéÀ» »ç¿ëÇÏ´Â ¸ðµç ÆäÀÌÁö¿¡¼­´Â FORM ÀÌ ¼­ºê¹ÔµÇ±â Á÷Àü¿¡ ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÏ¿© À¯È¿¼ºÀ» °ËÁõÇϵµ·Ï ÇÁ·Î±×·¡¹Ö ·êÀ» Á¤ÀÇÇÏ´Â °ÍÀÌ´Ù. ±×·¯¸é HTCs ¿¡ ½ÇÁ¦·Î ÀÌ ÇÔ¼öÀÇ ±¸ÇöÀ» Ãß°¡Çغ¸µµ·Ï ÇÏÀÚ. ¸ÕÀú Áö±Ý±îÁö ÇØ¿Ô´ø °Í°ú ¸¶Âú°¡Áö·Î PUBLIC:METHOD ¿¤·¹¸ÕÆ® ÅÂ±× ¼±¾ðÀ» ´ÙÀ½°ú °°ÀÌ Ãß°¡ÇØÁØ´Ù.

<PUBLIC:COMPONENT lightWeight="true">

    <PUBLIC:ATTACH event="oncontentready" for="element" onevent="evtContentReady();" />
    <PUBLIC:ATTACH event="onfocus"        for="element" onevent="evtFocus();"        />
    <PUBLIC:ATTACH event="onblur"         for="element" onevent="evtBlur();"         />
    <PUBLIC:ATTACH event="onkeydown"      for="element" onevent="evtKeydown();"      />
    
    <PUBLIC:PROPERTY name="defaultValue" value="0" />
    
    <PUBLIC:METHOD name="setDefaultValue" />
    <PUBLIC:METHOD name="isValidate"      />
    
    ...
±×¸®°í ÀÌ ÇÔ¼öÀÇ ½ÇÁúÀûÀÎ ±¸ÇöÀº ´ÙÀ½°ú °°Àºµ¥, ÀÌÁ¦´Â »ó´çÈ÷ Àͼ÷ÇØÁø ÀÛ¾÷ ÆÐÅϰú ÄÚµåÀÏ °ÍÀ̶ó°í »ý°¢ÇÑ´Ù. ±â¼úÀûÀÎ °üÁ¡¿¡¼­ º¼ ¶§¿¡µµ ±×´ÙÁö ÁÖ¸ñÇÒ¸¸ÇÑ ºÎºÐÀÌ ¾øÀ¸¹Ç·Î ºÒÇÊ¿äÇÑ ¼³¸íÀº ÇÏÁö ¾Êµµ·Ï ÇϰڴÙ. ºñ·Ï ³ÃÁ¤ÇÏ°Ô Æò°¡Çغ»´Ù¸é ÀÌ ¹æ¹ýÀÌ ¹®Á¦ ÀÚü¿¡ ´ëÇÑ ÇØ°áÃ¥À̶ó°í º¼ ¼ö´Â ¾ø°ÚÁö¸¸ ³ª¸§´ë·Î ÇϳªÀÇ À¯È¿¼º °ËÁõ ÇÁ·Î¼¼½º¸¦ ¸¸µé¾î³½´Ù´Â Á¡¿¡¼­´Â ±àÁ¤ÀûÀ¸·Î ¹Þ¾ÆµéÀÏ ¼ö ÀÖÀ» °ÍÀÌ´Ù. Âü°í·Î ¾Õ¿¡¼­ °£´ÜÇÏ°Ô ¾ð±ÞÇß´ø onchange À̺¥Æ®¸¦ Çîµé¸µÇÏ´Â ¹æ¹ý ´ë½Å onpropertychange À̺¥Æ®¸¦ ÅëÇØ¼­ ¿ìȸÀûÀ¸·Î³ª¸¶ ¹®Á¦Á¡À» ÇØ°áÇÏ´Â ¹æ¹ýµµ ÇÊÀÚ ³ª¸§´ë·Î °í¹ÎÇØº¸°í ÀÖÀ¸¹Ç·Î ±× ¼º°ú°¡ ³ª¿À´Â ´ë·Î º»¹®À» °»½ÅÇϵµ·Ï ÇϰڴÙ.

    ...
    
    function isValidate()
    {
        if (!checkTagType()) return;
        
        var objRegEx = /^\d+$/ig;
        
        return objRegEx.test(trim(element.value));
    }
    
    //-->
    </SCRIPT>
    
</PUBLIC:COMPONENT>
´ÙÇེ·´°Ôµµ µÎ ¹øÂ° ¹®Á¦Á¡ÀÇ °æ¿ì¿¡´Â º¸´Ù ±Ùº»ÀûÀÌ°í ¼¼·ÃµÈ ÇØ°á ¹æ¹ýÀÌ Á¸ÀçÇÑ´Ù. ±× Çٽɵµ ¸Å¿ì °£´ÜÇÑ ÆíÀε¥ ¹Ù·Î ÀϹÝÀûÀÎ °´Ã¼ ÁöÇâ ¾ð¾îÀÇ Å¬·¡½º ±¸Á¶¿¡¼­ º¸ÆíÀûÀ¸·Î Á¦°øµÇ¾îÁö´Â ÇÁ·ÎÆÛƼ ¸Þ¼­µå ¸ÞÄ¿´ÏÁòÀ» HTCs ³»ºÎÀûÀ¸·Î Á¦°øÇØÁÖ´Â °ÍÀÌ´Ù. ÀÚ¹Ù¿¡¼­ÀÇ getter / setter ³ª ºñÁÖ¾ó C# .NET ÀÇ get / set ¼Ó¼º Á¢±ÙÀÚ¸¦ ¸Ó¸®¼Ó¿¡ ¶°¿Ã·Áº¸¸é ÇÊÀÚÀÇ ¾ê±â¸¦ ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. µû¶ó¼­ µÎ ¹øÂ° ¹®Á¦Á¡À» ÇØ°áÇϱâ À§Çؼ­´Â ´ÜÁö HTCs ¿¡¼­ Á¦°øµÇ´Â ÇØ´ç ±â´ÉÀ» Ãæ½ÇÈ÷ ±¸ÇöÇϱ⸸ ÇÏ¸é µÈ´Ù. À̹ø ³íÀÇ´Â °¢°¢ÀÇ °úÁ¤µéÀÌ ´Ü°èº°·Î ¾à°£ º¹ÀâÇϹǷΠ¼­µÎ¸£Áö ¸»°í Â÷±ÙÂ÷±Ù µû¶ó¿À±â ¹Ù¶õ´Ù. ¸ÕÀú ´ÙÀ½°ú °°ÀÌ ±âÁ¸¿¡ ÀÛ¼ºÇß´ø defaultValue ¼Ó¼ºÀÇ PUBLIC:PROPERTY ¿¤·¹¸ÕÆ® ű׿¡ »õ·Î¿î µÎ °³ÀÇ ¼Ó¼º, get °ú put À» Ãß°¡Çغ¸ÀÚ.

<PUBLIC:PROPERTY get="getDefaultValue" put="putDefaultValue" name="defaultValue" ...
À̰͸¸À¸·Î ¿¤·¹¸ÕÆ® ű×ÀÇ º¯°æÀÌ ´Ù ¸¶¹«¸® µÈ °ÍÀº ¾Æ´Ï°í °è¼ÓÇØ¼­ Ãß°¡ÀûÀÎ ÀÛ¾÷ÀÌ ´õ ÀÌ·ç¾îÁ®¾ß¸¸ µÇ¹Ç·Î Àá½Ã ÀÌ Á¡À» ¿°µÎ¿¡ µÎ°í Àֱ⠹ٶõ´Ù. ÀÏ´Ü Áö±ÝÀº °è¼ÓÇØ¼­ ´ÙÀ½ ´Ü°è¸¦ ÁøÇàÇϵµ·Ï ÇϰڴÙ. ¾î·°Å³ª ÀÌ ¼Ó¼ºµéÀÌ ÀǹÌÇÏ´Â ¹Ù´Â Áö±ØÈ÷ °£´Ü¸í·áÇÏ´Ù. ±¸Ã¼ÀûÀ¸·Î ¸»Çؼ­ get ¼Ó¼º¿¡´Â defaultValue ÇÁ·ÎÆÛƼÀÇ °ªÀÌ ¸®Å쵃 ¶§ È£ÃâµÇ´Â ÀÚ¹Ù½ºÅ©¸³Æ® ÇÔ¼öÀÇ À̸§À» ¼³Á¤Çϰí, ¹Ý´ë·Î put ¼Ó¼º¿¡´Â defaultValue ÇÁ·ÎÆÛƼ¿¡ °ªÀ» ¼³Á¤ÇÒ ¶§ È£ÃâµÇ´Â ÀÚ¹Ù½ºÅ©¸³Æ® ÇÔ¼öÀÇ À̸§À» ¼³Á¤ÇÏ¸é µÇ´Â °ÍÀÌ´Ù. ±×¸®°í ¹°·Ð Áö±ØÈ÷ ´ç¿¬ÇÑ ¾ê±â°ÚÁö¸¸ ÀÌ µÎ °¡Áö ¼Ó¼º¿¡ ÁöÁ¤µÈ ÀÚ¹Ù½ºÅ©¸³Æ® ÇÔ¼öµéÀº º°µµ·Î ±¸ÇöÇÏ¿© HTCs ¿¡ Ãß°¡ÇØÁÖ¾î¾ß¸¸ ÇÑ´Ù. À̸¦Å×¸é ´ÙÀ½ÀÇ µÎ ÀÚ¹Ù½ºÅ©¸³Æ® ÇÔ¼ö´Â ±× ±¸Çö °á°úÀÇ ÇÑ »ç·Ê´Ù.

    function getDefaultValue()
    {
        return defaultValue;
    }
    
    function putDefaultValue(value)
    {
        if (!checkTagType()) return;
        
        var objRegEx = /^\d+$/ig;
        
        if (objRegEx.test(value))
            defaultValue = value;
        else
            defaultValue = 0;
    }
ÀÌÁ¦ ÀÌ·± ÆÐÅÏÀÇ ÀÚ¹Ù½ºÅ©¸³Æ® ÄÚµå´Â °ÅÀÇ ¿Ü¿ì´Ù½ÃÇÇ ÇßÀ» ÅÍÀ̹ǷΠ¹«ÀǹÌÇÑ ÄÚµå ¼³¸íÀº ÇÇÇϵµ·Ï ÇϰڴÙ. ¾Æ¹«Æ° °á°úÀûÀ¸·Î ÀÌÁ¦ ¿ì¸®µéÀÌ ¿øÇÏÁö ¾Ê´Â ±âº»°ªÀÌ ¼³Á¤µÇ´Â »çÅ´ °ÅÀÇ ¿Ïº®ÇÏ°Ô ÇÇÇÒ ¼ö ÀÖ°Ô µÈ °ÍÀ¸·Î º¸ÀδÙ. ±×·¯³ª °ú¿¬ Á¤¸»·Î ±×·± °ÍÀϱî? ÇöÀç±îÁö ÀÛ¾÷ÇÑ °á°ú¸¦ ÀúÀåÇÏ°í ½ÇÁ¦·Î Å×½ºÆ®¸¦ ÇØº¸¸é ½ºÅà ¿À¹öÇÃ·Î¿ì ¿À·ù°¡ ¹ß»ýÇÑ´Ù. ±×·¸´Ù¸é ±× ¿øÀÎÀº ¹«¾ùÀϱî? Áö±Ý±îÁö ¿ì¸®µéÀÌ ÀÛ¼ºÇÑ Äڵ带 °¡¸¸È÷ »ìÆìº»´Ù¸é ¾Æ¸¶µµ ±× ÀÌÀ¯¸¦ ½±°Ô ÆÄ¾ÇÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ºùºù µ¹¸®Áö ¾Ê°í ´ÜµµÁ÷ÀÔÀûÀ¸·Î ¹®Á¦Á¡À» ¾ê±âÇÏÀÚ¸é ¿À·ù°¡ ¹ß»ýÇÏ´Â ¿øÀÎÀº defaultValue ÇÁ·ÎÆÛƼÀÇ ³»ºÎ º¯¼ö°¡ ±× ¾îµð¿¡µµ ¼±¾ðµÇÁö ¾Ê¾Ò±â ¶§¹®ÀÌ´Ù. Áï ÀÌ µÎ ÀÚ¹Ù½ºÅ©¸³Æ® ÇÔ¼ö ³»ºÎ¿¡¼­´Â defaultValue ÇÁ·ÎÆÛƼÀÇ °ªÀ» ¼³Á¤Çϰųª ¸®ÅÏÇÏ´Â ÀÛ¾÷ÀÌ Ã³¸®µÇ´Âµ¥, ¿ª¼³ÀûÀ¸·Î ÀÌ µÎ ÇÔ¼ö°¡ È£ÃâµÇ´Â ½ÃÁ¡ ÀÚü°¡ ¹Ù·Î defaultValue ÇÁ·ÎÆÛƼÀÇ °ªÀ» ¼³Á¤Çϰųª ¸®ÅÏÇϰíÀÚ ½ÃµµµÇ¾îÁö´Â °æ¿ìÀ̱⠶§¹®ÀÌ´Ù. µû¶ó¼­ ÀÚ¿¬½º·´°Ô ¹«ÇÑ ·çÇÁ°¡ ¹ß»ýµÇ¸ç ±× °á°ú·Î ÀÚ¹Ù½ºÅ©¸³Æ®ÀÇ ÇÔ¼ö È£Ãâ ½ºÅþּ­ ¿À¹ö Ç÷ο찡 ¹ß»ýµÇ´Â °ÍÀÌ´Ù. ÀÌ ¿À·ù¸¦ Á¦°ÅÇÏ´Â ¹æ¹ýÀº °£´ÜÇÏ´Ù. ´ÙÀ½°ú °°ÀÌ ÀÌ ÇÁ·ÎÆÛƼÀÇ °ªÀ» ´ãÀ» Àü¿ª º¯¼ö¸¦ Çϳª ¼±¾ðÇØÁÖ°í ±âº»°ªÀ» ÃʱâÈ­ÇØÁÖ¸é µÇ´Â °ÍÀÌ´Ù.

    ...
    
    <SCRIPT language="javascript" type="text/javascript">
    <!--
    var defaultValue = 0;
    
    ...
ÀÌ Àü¿ª º¯¼öÀÇ À̸§°ú ÇÁ·ÎÆÛƼÀÇ À̸§ÀÌ µ¿ÀÏÇÏ´Ù´Â Á¡¿¡ ÁÖÀÇÇϱ⠹ٶõ´Ù. ºñ·Ï ÀÌ·¯ÇÑ Æ¯Â¡ÀÌ ÇÁ·ÎÆÛƼ ³»ºÎ º¯¼ö¸¦ ¼±¾ðÇϱâ À§ÇØ ¹Ýµå½Ã ÇÊ¿äÇÑ °­Á¦ÀûÀÎ ·êÀº ¾Æ´ÏÁö¸¸, ±âŸ ºÎ°¡ÀûÀÎ ÀÛ¾÷¾øÀÌ °£´ÜÇÏ°Ô Àü¿ª º¯¼ö¸¦ ¼±¾ðÇϱâ À§Çؼ­´Â Àü¿ª º¯¼öÀÇ À̸§°ú ÇÁ·ÎÆÛƼÀÇ À̸§ÀÌ µ¿ÀÏÇØ¾ß¸¸ ÇÑ´Ù. ¸¸¾à ÇÁ·ÎÆÛƼ ÀÚüÀÇ À̸§°ú Àü¿ª º¯¼öÀÇ À̸§ÀÌ °°¾Æ¼­ Äڵ尡 Àü¹ÝÀûÀ¸·Î È¥¶õ½º·´°Ô ´À²¸Áø´Ù¸é ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î Àü¿ª º¯¼öÀÇ À̸§À» Á÷Á¢ ÁöÁ¤ÇØÁÖ´Â °Íµµ ¹°·Ð °¡´ÉÇÏ´Ù. ¸ÕÀú ÇØ´ç ÇÁ·ÎÆÛƼÀÇ PUBLIC:PROPERTY ¿¤·¹¸ÕÆ® ű׿¡ ´ÙÀ½°ú °°ÀÌ internalname ¼Ó¼ºÀ» Ãß°¡ÇÏ°í ±× °ªÀ¸·Î´Â ÇÁ·ÎÆÛƼÀÇ °ªÀ» ´ã°íÀÚÇÏ´Â Àü¿ª º¯¼öÀÇ À̸§À» ÀÔ·ÂÇØÁØ´Ù. ±×¸®°í ¾Õ¿¡¼­ ¼±¾ðÇß´ø °Í°ú µ¿ÀÏÇÏ°Ô ÀÌ À̸§À¸·Î Àü¿ª º¯¼ö¸¦ ¼±¾ðÇØÁÖ¸é µÈ´Ù.

<PUBLIC:PROPERTY ... name="defaultValue" internalname="_defaultValue" value="0" />
°á°úÀûÀ¸·Î ¹æ±Ý ±¸ÇöÇß´ø ÇÁ·ÎÆÛƼ ¸Þ¼­µå ÀÚ¹Ù½ºÅ©¸³Æ® ÇÔ¼ö¿¡¼­ »ç¿ëµÈ Àü¿ª º¯¼öÀÇ À̸§µµ ÀÌ¿¡ ¸ÂÃß¾î º¯°æµÇ¾î¾ß ÇÑ´Ù. ±×¸®°í Áö±Ý±îÁö ÇÁ·ÎÆÛƼÀÇ ±âº»°ª ¼³Á¤À» À§ÇØ »ç¿ëµÇ¾ú´ø PUBLIC:PROPERTY ¿¤·¹¸ÕÆ® ű×ÀÇ value ¼Ó¼ºÀº ÀÌÁ¦ ´õ ÀÌ»ó ÇÊ¿äÇÏÁö ¾ÊÀ¸¹Ç·Î »èÁ¦ÇÑ´Ù. ´ë½Å Áö±ÝºÎÅÍ´Â Àü¿ª º¯¼öÀÇ ÃʱⰪÀÌ ±× ±â´ÉÀ» ´ë½ÅÇÏ°Ô µÈ´Ù. ´ÙÀ½ÀÇ ¿¹Á¦´Â ÀÌ·¸°Ô ¼öÁ¤µÈ HTCs °¡ ¿Ã¹Ù¸£Áö ¾ÊÀº ÇÁ·ÎÆÛƼ°ª ¼³Á¤ ½Ãµµ¸¦ º¸Á¤ÇÏ´Â ¸ð½ÀÀ» º¸¿©ÁÖ°í ÀÖ´Ù. ¶ÇÇÑ Áö±Ý ³íÀÇÇÑ ÀÌ internalname ¼Ó¼ºÀº PUBLIC:METHOD ¿¤·¹¸ÕÆ® ű׸¦ ´ë»óÀ¸·Îµµ µ¿ÀÏÇÑ ¿µÇâ·ÂÀ» ¹ßÈÖÇÏ¿© ³»ºÎ ÀÚ¹Ù½ºÅ©¸³Æ® ÇÔ¼öÀÇ À̸§°ú ¿ÜºÎ·Î ³ëÃâµÇ´Â HTCs ¸Þ¼­µåÀÇ À̸§À» ´Ù¸£°Ô ÁöÁ¤ÇÒ ¼ö ÀÖÀ¸¹Ç·Î Âü°íÇϱ⠹ٶõ´Ù.

     

<input type="text" id="HTCs3" style="behavior: url(asp_0017_03.htc);" defaultValue="ABC">
À̹ø¿¡´Â ³íÀÇÀÇ °¢µµ¸¦ Á¶±Ý ´Þ¸®Çغ¸µµ·Ï ÇÏÀÚ. Áö±Ý±îÁö ¿ì¸®µéÀÌ ´Ù·ç¾î¿Ô´ø ³»¿ë ´ëºÎºÐÀÌ ÇÁ·ÎÆÛƼ¿Í ¸Þ¼­µå¿¡ °üÇÑ °ÍÀ̾ú´Ù´Â Á¡À» °¨¾ÈÇØº»´Ù¸é ±× ´ÙÀ½ ´Ü°è·Î¼­ ÀÚ¿¬½º·´°Ô À̺¥Æ®¿¡±îÁö »ý°¢ÀÌ ¹ÌÄ¡°Ô µÉ °ÍÀÌ´Ù. »ó½ÄÀûÀ¸·Î ¸Þ¼­µå¿Í ÇÁ·ÎÆÛƼ¿¡ ´ëÇÑ ±â¹Ý ±¸Á¶¸¦ Á¦°øÇØÁÖ´Â HTCs °¡ À̺¥Æ®¿¡ ´ëÇÑ ±â¹Ý ±¸Á¶¸¸ Á¦°øÇØÁÖÁö ¾ÊÀ» ÀÌÀ¯´Â ¾ø´Ù. ¿ÀÈ÷·Á À̺¥Æ®¿¡ ´ëÇÑ ±â¹Ý ±¸Á¶¸¦ Á¦°øÇØÁÙ »Ó¸¸ ¾Æ´Ï¶ó ÀϹÝÀûÀÎ DHTML ÀÇ À̺¥Æ® ¸ðµ¨°ú À¯±âÀûÀ¸·Î Àß °áÇÕµÈ ¸ÞÄ¿´ÏÁòÀ» Á¦°øÇØÁֹǷΠÃß°¡ÀûÀÎ ³ë·Â ¾øÀ̵µ »ó´çÈ÷ °íǰÁúÀÇ °á°ú¸¦ ¾òÀ» ¼ö ÀÖ´Â °ÍÀÌ´Ù. ±×·¯¸é Áö±Ý±îÁö ±¸ÇöµÈ HTCs ¿¡ »ç¿ëÀÚ°¡ ¿Ã¹Ù¸£Áö ¾ÊÀº Çü½ÄÀÇ µ¥ÀÌÅ͸¦ ÀÔ·ÂÇÏ´Â °æ¿ì ¿ì¸®µéÀÌ ±¸ÇöÇÑ »ç¿ëÀÚ Á¤ÀÇ À̺¥Æ®°¡ ¹ß»ýÇϵµ·Ï Äڵ带 Ãß°¡Çغ¸ÀÚ. ¸ÕÀú »ç¿ëÀÚ Á¤ÀÇ À̺¥Æ®ÀÇ À̸§Àº onIncongruent ¶ó°í Çϱâ·Î ÇÏ¸ç µ¿ÀÏÇÑ À̸§À¸·Î ű×ÀÇ ¼Ó¼º¿¡ ³ëÃâµÇ¾îÁú °ÍÀÌ´Ù. ¸¸¾à »ç¿ëÀÚ Á¤ÀÇ À̺¥Æ®ÀÇ À̸§ÀÌ HTML ű׿¡ Á¸ÀçÇÏ´Â ±âº» À̺¥Æ®ÀÇ À̸§°ú µ¿ÀÏÇÏ´Ù¸é ±× µ¿ÀÛ Æ¯¼ºÀÌ »ç¿ëÀÚ Á¤ÀÇ À̺¥Æ®¿¡ ÀÇÇØ¼­ µ¤¾î¾º¿öÁö¹Ç·Î Âü°í¹Ù¶õ´Ù. ´ÙÀ½°ú °°ÀÌ PUBLIC:EVENT ¿¤·¹¸ÕÆ® ű׸¦ ¼±¾ðÀ» Ãß°¡ÇÑ´Ù.

<PUBLIC:EVENT name="onIncongruent" id="_Incongruent" />
Áö±Ý±îÁö »ìÆìº¸¾Ò´ø ÇÁ·ÎÆÛƼ³ª ¸Þ¼­µå¸¦ À§ÇÑ ¿¤·¹¸ÕÆ® ÅÂ±× ¼±¾ð°ú´Â ´Ù¸£°Ô À̺¥Æ®¸¦ À§ÇÑ ¿¤·¹¸ÕÆ® ÅÂ±× ¼±¾ðÀÇ °æ¿ì¿¡´Â ¹Ýµå½Ã id ¼Ó¼ºÀÌ ¼³Á¤µÇ¾î¾ß¸¸ Çϴµ¥ ±× ±¸Ã¼ÀûÀÎ ÀÌÀ¯´Â Àá½Ã µÚ¿¡ ¼³¸íÇϵµ·Ï ÇÒ °ÍÀÌ´Ù. ´ÙÀ½ ÀÛ¾÷À¸·Î´Â ÀÌ »ç¿ëÀÚ Á¤ÀÇ À̺¥Æ®¸¦ ¹ß»ý½Ã۱â À§ÇÑ ¸ñÀûÀÇ ÀÚ¹Ù½ºÅ©¸³Æ® ÇÔ¼ö¸¦ Çϳª ¸¸µé¾î ÁÖ¾î¾ß ÇÑ´Ù. »ç¿ëÀÚ Á¤ÀÇ À̺¥Æ® ÀÚü¸¦ ¹ß»ý½Ã۱â À§Çؼ­ ¹Ýµå½Ã º°µµÀÇ ÇÔ¼ö¸¦ Á¤ÀÇÇØ¾ß¸¸ ÇÏ´Â °ÍÀº ¾Æ´ÏÁö¸¸ event °³Ã¼¸¦ »ý¼ºÇϰí ÇÊ¿äÇÑ ¼Ó¼º°ªµéÀ» ÀûÀýÇÏ°Ô ¼³Á¤ÇÏ´Â µîÀÇ ¹Ýº¹ÀûÀÎ ÀÛ¾÷À» È¿°úÀûÀ¸·Î ó¸®Çϱâ À§Çؼ­´Â ÀÌó·³ À¯Æ¿¸®Æ¼ ÇÔ¼ö¸¦ Çϳª ¸¸µé¾îÁÖ´Â °Íµµ ÁÁÀº ¹æ¹ýÀÏ °ÍÀÌ´Ù. ´ÙÀ½ ÇÔ¼ö¸¦ »ìÆìº¸ÀÚ.

    ...
    
    function fireIncongruent(Value)
    {
        objEvent = createEventObject();
        if (Value != null)
            objEvent.returnValue = Value;
        _Incongruent.fire(objEvent);
    }
    
    //-->
    </SCRIPT>
ÀÌ ÇÔ¼ö¿¡´Â ÁÖÀÇ ±í°Ô »ìÆìº¼¸¸ÇÑ ³»¿ëµéÀÌ ¸î °¡Áö Á¸ÀçÇÑ´Ù. °¡Àå ¸ÕÀú ¤¾îºÁ¾ßµÉ ºÎºÐÀº ÇÔ¼öÀÇ °¡Àå ¸¶Áö¸· ¶óÀÎÀ¸·Î¼­, ¹«¾ù ¶§¹®¿¡ PUBLIC:EVENT ¿¤·¹¸ÕÆ® ű׸¦ ¼±¾ðÇϸ鼭 ¹Ýµå½Ã id ¼Ó¼ºÀ» ¼³Á¤Çؾ߸¸ ÇÏ´ÂÁö¿¡ ´ëÇÑ ÀÌÀ¯°¡ Àß µå·¯³ª ÀÖ´Ù. »ç¿ëÀÚ Á¤ÀÇ À̺¥Æ®¸¦ ¹ß»ý½ÃŰ´Â ½ÇÁúÀûÀÎ ¿ªÈ°À» ´ã´çÇÏ´Â fire() ¸Þ¼­µå¸¦ È£ÃâÇϱâ À§Çؼ­´Â ÇØ´ç À̺¥Æ®ÀÇ ½Äº°ÀÚ ¿ªÈ°À» ´ã´çÇÏ´Â id ¼Ó¼ºÀÌ ÇÊ¿äÇÑ °ÍÀÌ´Ù. ±×¸®°í fire() ¸Þ¼­µå¿¡´Â ÀÎÀÚ·Î event °³Ã¼ÀÇ ÀνºÅϽº¸¦ »ý¼ºÇÏ¿© Àü´ÞÇØ¾ß¸¸ Çϴµ¥, ¿©±â¿¡¼­ ¾ê±âÇϰí ÀÖ´Â event °³Ã¼´Â ÀϹÝÀûÀÎ DHMTL ÇÁ·Î±×·¡¹Ö¿¡¼­ »ç¿ëµÇ´Â ¹Ù·Î ±× event °³Ã¼¿Í Á¤È®ÇÏ°Ô °°Àº °³Ã¼¸¦ ÀǹÌÇÏ´Â °ÍÀ¸·Î, À§ÀÇ ÇÔ¼öÀÇ Ã¹ ¹øÂ° ¶óÀο¡¼­ ã¾Æº¼ ¼ö ÀÖ´Â createEventObject() ¸Þ¼­µå¸¦ »ç¿ëÇÏ¿© ±× ÀνºÅϽº¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Ù. º¸Åë event °³Ã¼·ÎºÎÅÍ Á¦°øµÇ´Â ´ëºÎºÐÀÇ Á¤º¸µé, Áï ¸¶¿ì½º ¹öư Á¤º¸³ª Űº¸µå Á¤º¸, ÁÂÇ¥ Á¤º¸ µîÀ» ´ã°í ÀÖ´Â ¼Ó¼ºµéÀº Àбâ Àü¿ëÀÌÁö¸¸, Áö±Ý°ú °°ÀÌ createEventObject() ¸Þ¼­µå¸¦ ÅëÇØ¼­ ÀνºÅϽº°¡ »ý¼ºµÈ °æ¿ì¿¡´Â ¸ðµç ¼Ó¼º°ªÀ» ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. µû¶ó¼­ °³¹ßÀÚµéÀÌ ±× °ªÀ» ÀÚÀ¯·Ó°Ô ¼³Á¤ÇÒ ¼ö Àִµ¥ ÀÌ´Â ½Ç·Î ´ë´ÜÇÑ ÀåÁ¡À̶ó°í Æò°¡ÇÒ ¼ö ÀÖÀ¸¸ç, º»¹®¿¡¼­´Â ÇϳªÀÇ °£´ÜÇÑ ¿¹·Î returnValue ¼Ó¼º°ªÀ» ¼³Á¤ÇÏ´Â °æ¿ì¸¦ º¸¿©ÁÖ°í ÀÖ´Ù. Âü°í·Î ÀÌ ¸Þ¼­µå´Â HTCs ¿¡¼­¸¸ »ç¿ëÀÌ °¡´ÉÇÑ °ÍÀº ¾Æ´Ï°í document °³Ã¼¿¡¼­µµ µ¿ÀÏÇÑ ±â´ÉÀ» Á¦°øÇØÁÖ´Â ¸Þ¼­µå¸¦ °°Àº À̸§À¸·Î Áö¿øÇØÁֹǷΠÀÌ ºÎºÐ¿¡ °ü½ÉÀÌ ÀÖÀ¸½Å ºÐµéÀº MSDN À» »ìÆìº¸±â ¹Ù¶õ´Ù. ÀÌÁ¦ ÀÌ ÇÔ¼ö¸¦ ÀûÀýÇÑ À§Ä¡¿¡¼­ È£ÃâÇØÁֱ⸸ ÇÏ¸é »ç¿ëÀÚ Á¤ÀÇ À̺¥µå°¡ À̺¥Æ®°¡ ¹ß»ýµÈ´Ù. ´ÙÀ½ ÄÚµå´Â onblur À̺¥Æ®ÀÇ HTCs À̺¥Æ® Çîµé·¯·Î ±¸ÇöµÈ evtBlur() ÇÔ¼ö¸¦ ¼öÁ¤ÇÑ °á°úÀÌ´Ù.

    ...
    
    function evtBlur()
    {
        if (!checkTagType()) return;
        
        var objRegEx = /^\d+$/ig;
        
        if (!objRegEx.test(trim(element.value)))
        {
            element.value = defaultValue;
            fireIncongruent("Incongruent Data!");
        }
    }
    
    ...
±×¸®°í ´ÙÀ½Àº Áö±Ý±îÁö ±¸ÇöµÈ ¸ðµç ÄÚµåµéÀÌ ¹Ý¿µµÈ HTCs °¡ Àû¿ëµÈ ÃÖÁ¾ °á°ú¹°ÀÌ´Ù. ¼ýÀÚ°¡ ¾Æ´Ñ ÀÓÀÇÀÇ ¹®ÀÚ¿­À» º¹»çÇÏ¿© ºÙ¿©³Ö±â·Î ÀԷ°ªÀ» º¯°æÇغ¸¸é À̺¥Æ®°¡ ¹ß»ýÇÏ´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ±×¸®°í ÇÑ °¡Áö ÁÖÀÇÇØ¾ß ÇÒ Á¡Àº ÀÌ¿Í °°ÀÌ HTCs ¼öÁØ¿¡¼­ ±¸ÇöµÈ »ç¿ëÀÚ Á¤ÀÇ À̺¥Æ®´Â ±âº»ÀûÀ¸·Î ¹öºí¸µÀÌ µÇÁö ¾Ê´Â´Ù´Â »ç½ÇÀÌ´Ù. ±¸Ã¼ÀûÀÎ ½Ç·Ê·Î ¾Æ·¡ÀÇ Äڵ忡¼­ SPAN ű׿¡ Á¤ÀÇµÈ onIncongruent À̺¥Æ® Çîµé·¯ÀÇ ÄÚµå´Â ÀüÇô µ¿ÀÛÇÏÁö ¾Ê´Âµ¥ Àá½Ã¸¸ °õ°õÈ÷ »ý°¢Çغ¸¸é ¸Å¿ì ´ç¿¬ÇÑ ÀÏÀ̶ó´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù.

     

<span onIncongruent="alert('Event from SPAN Tag.');">
    <input type="text" id="HTCs4" onIncongruent="alert(event.returnValue);" style=" ... >
</span>
Áö±Ý±îÁö ¿ì¸®µéÀº HTCs ÀÇ ÇÁ·ÎÆÛƼ³ª ¸Þ¼­µå, ±×¸®°í À̺¥Æ®¸¦ ±¸ÇöÇÏ´Â ¹æ¹ý°ú °ü·ÃµÈ ¿©·¯°¡Áö ±â¹ýµé¿¡ °üÇØ¼­ »ìÆìº¸¾Ò´Ù. ±×·¸´Ù¸é À̹ø¿¡´Â HTCs ÀÚüÀÇ Àü¹ÝÀûÀÎ µ¿ÀÛ Æ¯¼ºÀ» Á¦¾îÇÏ´Â ¹æ¹ý¿¡ °üÇØ¼­ »ìÆìº¸µµ·Ï ÇÏÀÚ. ÀÌ¿Í °ü·ÃµÈ ¿¤·¹¸ÕÆ® ű״ µÎ °¡Áö·Î, ÀÌ¹Ì ¾Õ¿¡¼­ Àá½Ã »ìÆìº¸¾Ò´ø HTCs ÀÚü¸¦ Á¤ÀÇÇÏ´Â ±â´ÉÀ» °¡Áö°í ÀÖ´Â PUBLIC:COMPONENT ¿¤·¹¸ÕÆ® ÅÂ±×¿Í Áö±Ý óÀ½À¸·Î ³íÀǵǾîÁö´Â PUBLIC:DEFAULTS ¿¤·¹¸ÕÆ® űװ¡ ¹Ù·Î ±×°ÍÀÌ´Ù. ±×·±µ¥ ÇÊÀÚ°¡ ¸»ÇØ ³õ°í¼­µµ ¹«¾ÈÇϱâ´Â ÇÏÁö¸¸ ³ÃÁ¤ÇÏ°Ô Æò°¡ÇØ º¼ ¶§ ¿ì¸®µéÀÌ ÀÌ µÎ ¿¤·¹¸ÕÆ® ű׸¦ °¡Áö°í¼­ ó¸®ÇÒ ¼ö ÀÖ´Â ÀÛ¾÷Àº ÇöÀç ½ÃÁ¡¿¡¼­´Â ±×´ÙÁö ¸¹Áö°¡ ¾Ê´Ù. ¿Ö³ÄÇϸé Áö±Ý±îÁö ¿ì¸®µéÀÌ ³íÀÇÇØ¿Â ´ëºÎºÐÀÇ ³»¿ëµéÀÌ Attached Behavior ¿¡ °üÇÑ °ÍÀÓ¿¡ ¹ÝÇÏ¿© ¾Õ¿¡¼­ ¸»ÇÑ µÎ ¿¤·¹¸ÕÆ® űװ¡ Á¦°øÇÏ´Â ´ëºÎºÐÀÇ ±â´ÉµéÀº Element Behavior ¿Í °ü·ÃµÈ °ÍµéÀ̱⠶§¹®ÀÌ´Ù. ±×·± ÀÌÀ¯·Î º»¹®¿¡¼­´Â Áö±Ý±îÁöÀÇ ³íÀÇ¿Í °ü·ÃµÈ ±ØÈ÷ ÀϺÎÀÇ ±â´Éµé¿¡ ´ëÇØ¼­¸¸ »ìÆìº¼ »ý°¢À̸ç PUBLIC:DEFAULTS ¿¤·¹¸ÕÆ® ű״ ¾Æ¿¹ °Å·ÐÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. ´ÙÀ½Àº ¿ì¸®µéÀÌ ÀÛ¼ºÇÑ HTCs ÄÚµåÀÇ PUBLIC:DEFAULTS ¿¤·¹¸ÕÆ® ÅÂ±× ¼±¾ðÀ¸·Î¼­ Áö±Ý±îÁö º°´Ù¸¥ ¼³¸í¾øÀÌ ÀϰýÀûÀ¸·Î »ç¿ëÇØ¿Â ºÎºÐÀÌ´Ù. ¹«Ã´À̳ª ½ÉÇÃÇÑ ±¸Á¶¸¦ °¡Áö°í ÀÖÀ¸¸ç ºÓÀº»öÀ¸·Î °­Á¶µÈ ºÎºÐÀ» »ìÆìº¸¸é lightWeight ¶ó´Â ¼Ó¼ºÀÇ °ªÀÌ true ·Î ¼³Á¤µÇ¾ú´Ù´Â »ç½ÇÀ» ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀÌ lightWeight ¼Ó¼ºÀÌ °®°í ÀÖ´Â Àǹ̴ ¸Å¿ì °£´ÜÇÏ´Ù. Áï ÀÌ HTCs °¡ ³»ºÎ¿¡ ¸¶Å©¾÷, Áï ·»´õ¸µ µÇ¾î¾ß ÇÒ HTML ű׸¦ °¡Áö°í ÀÖ´ÂÁö ¿©ºÎ¸¦ ³ªÅ¸³½´Ù.

<PUBLIC:COMPONENT lightWeight="true" />

    ...
    
</PUBLIC:COMPONENT>
·»´õ¸µÀÇ °üÁ¡¿¡¼­ º¼ ¶§ Áö±Ý°ú °°ÀÌ HTCs ³»ºÎ¿¡ ±× ¾î¶°ÇÑ HTML ű׵µ Á¸ÀçÇÏÁö ¾Ê´Â´Ù¸é HTML űװ¡ Á¸ÀçÇÏ´Â °æ¿ì¿¡ ºñÇÏ¿© »ó´ëÀûÀ¸·Î °¡º±´Ù°í (lightWeight) ÆÇ´ÜÇÒ ¼ö ÀÖÀ¸¹Ç·Î ±× °ªÀº true ·Î ÁöÁ¤µÈ´Ù. ±×¸®°í ÀÌ °æ¿ì ·»´õ¸µ ÇÁ·Î¼¼½º ÀÚü°¡ ÇÊ¿ä¾ø´Ù´Â Àǹ̷Π¹Þ¾Æµé¿©Á® ÆÛÆ÷¸Õ½ºÀÇ Çâ»óÀ» ±â´ëÇÒ ¼ö ÀÖ°Ô µÇ´Â °ÍÀÌ´Ù. ±×·±µ¥ ¿©±â¿¡¼­ ¹Ýº¹ÀûÀ¸·Î ¸»Çϰí ÀÖ´Â 'HTCs ÀÇ ³»ºÎ¿¡ Á¸ÀçÇÏ´Â HTML ű×' ¶ó´Â ¹®ÀåÀÇ Àǹ̸¦ ¿ÀÇØÇÏÁö ¸»¾Æ¾ß ÇÑ´Ù. HTCs ÀÇ Á¾·ù¿¡´Â Å©°Ô Attached Behavior ¿Í Element Behavior ¶ó´Â µÎ °¡Áö ¹üÁÖ°¡ Á¸ÀçÇÑ´Ù´Â »ç½ÇÀº ÀÌ¹Ì Áö³­¹ø ±Û¿¡¼­ °£·«ÇÏ°Ô ¼³¸íÇÑ ¹Ù ÀÖ´Ù. ÀÌ µÎ Á¾·ùÀÇ HTCs °£ÀÇ °áÁ¤ÀûÀÎ Â÷ÀÌÁ¡Àº »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º°¡ Á¸ÀçÇÏ´ÂÁö ¶Ç´Â Á¸ÀçÇÏÁö ¾Ê´ÂÁö ¿©ºÎÀ̰í Áö±Ý ¿ì¸®µéÀº »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º°¡ Á¸ÀçÇÏÁö ¾Ê´Â Attached Behavior ¸¦ ÁßÁ¡ÀûÀ¸·Î ³íÀÇÇϰí ÀÖ´Â °úÁ¤Áß¿¡ ÀÖ´Ù. ¾Õ¿¡¼­ ¸»Çϰí ÀÖ´Â 'HTCs ÀÇ ³»ºÎ¿¡ Á¸ÀçÇÏ´Â HTML ű×' ¶õ ¹Ù·Î Element Behavior ¿¡¼­ »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º¸¦ ±¸¼ºÇÏ´Â HTML ű׵éÀ» ¶æÇÏ´Â °ÍÀÌ´Ù. ±×·¯¹Ç·Î ÀÌ·± Á¾·ùÀÇ HTML űװ¡ ÀüÇô Á¸ÀçÇÏÁö ¾Ê´Â ¿ì¸®µéÀÇ HTCs ¿¡¼­´Â, ºñ·Ï ÀÚ¹Ù½ºÅ©¸³Æ® ÄÚµåÀÇ ³»ºÎ¿¡´Â HTML ű×ÀÇ Æí¸°µéÀÌ Æ÷ÇԵǾî ÀÖ´Ù°í ÇÒÁö¶óµµ lightWeight ¼Ó¼º°ªÀ» true ·Î ¼³Á¤ÇÏ¿© ÆÛÆ÷¸Õ½ºÀÇ Çâ»óÀ» ±â´ëÇÒ ¼ö ÀÖ´Ù. Âü°í·Î ÀÌ ¼Ó¼ºÀÇ ±âº»°ªÀº false ÀÌ´Ù.

¸¶Áö¸·À¸·Î ÀÌ·± °æ¿ì¸¦ ÇÑ ¹ø °¡Á¤Çغ¸µµ·Ï ÇÏÀÚ. ÀÓÀÇÀÇ HTML űװ¡ Á¸ÀçÇϰí ÀÖ´Ù. ±×·±µ¥ ÀÌ Å±׿¡´Â µÎ °¡Áö HTCs °¡ µ¿½Ã¿¡ ¼³Á¤µÇ¾î ÀÖ´Ù°í »ý°¢Çغ¸ÀÚ. ±×¸®°í °ø±³·Ó°Ôµµ µÎ HTCs ¿¡¼­ ¸ðµÎ MyFunction À̶ó´Â ¸Þ¼­µå¸¦ Á¤ÀÇÇϰí ÀÖ´Ù¸é, ±×¸®°í ÀÚ¹Ù½ºÅ©¸³Æ®¿¡¼­ ÇØ´ç ¸Þ¼­µå¸¦ È£ÃâÇÑ´Ù¸é ¾î¶»°Ô µÉ±î? ´Ü¼øÇÏ°Ô ¸Ó¸®¼ÓÀ¸·Î¸¸ »ý°¢ÇغÁµµ ¹º°¡ ¹®Á¦°¡ ¹ß»ýÇÒ °ÍÀ̶ó´Â »ç½ÇÀ» ÁüÀÛÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÇÊÀÚ°¡ Å×½ºÆ® ÇØ º» ¹Ù¿¡ µû¸£¸é ÀÌ¿Í °°Àº °æ¿ì ¸í½ÃÀûÀÎ ¿À·ù°¡ ¹ß»ýÇÏÁö´Â ¾ÊÁö¸¸ µÎ °³ÀÇ HTCs Áß¿¡¼­ ¼ø¼­ÀûÀ¸·Î ¸ÕÀú ¼³Á¤µÈ HTCs ÀÇ ¸Þ¼­µå¸¸ÀÌ ½ÇÇàµÈ´Ù. µû¶ó¼­ °¢°¢ÀÇ HTCs ¸¦ ±¸ºÐÇÏ¿© ÁöÁ¤ÇÒ ¼ö ÀÖ´Â ¾î¶² ¹æ¹ýÀÌ Á¦°øµÇ¾î¾ßÁö¸¸ °³¹ßÀÚ°¡ ¿øÇÏ´Â ¸Þ¼­µå¸¦ Á¤È®ÇÏ°Ô Áö½ÃÇÏ¿© È£ÃâÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀÌ ¸ñÀûÀ¸·Î »ç¿ëµÇ´Â ¼Ó¼ºÀÌ ¹Ù·Î name ¼Ó¼ºÀÌ´Ù. ´ÙÀ½ÀÇ Äڵ带 »ìÆìº¸ÀÚ.

<PUBLIC:COMPONENT lightWeight="true" name="NumericOnly" />

    ...
    
</PUBLIC:COMPONENT>
ÀÌÁ¦ ÀÚ¹Ù½ºÅ©¸³Æ® ÄÚµå´Â ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºµÉ ¼ö ÀÖ´Ù. ¹°·Ð ÇØ´ç ű׿¡ ´Ü ÇϳªÀÇ HTCs ¸¸ ¼³Á¤µÇ¾î ÀÖ´Ù¸é name ¼Ó¼ºÀÇ ÁöÁ¤ ¿©ºÎ¿Í´Â °ü°è¾øÀÌ Áö±Ý±îÁö ±âÁ¸°ú µ¿ÀÏÇÑ ¹æ¹ýÀ¸·Î ¸Þ¼­µå¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù. ±×¸®°í ÀÌ·¯ÇÑ Æ¯¼ºÀº ÇÁ·ÎÆÛƼ¿¡µµ µ¿ÀÏÇÏ°Ô Àû¿ëµÇ¹Ç·Î Âü°íÇϱ⠹ٶõ´Ù.

     

<input type="text" id="HTCs5" style="behavior: url(asp_0017_05.htc);">

<SCRIPT language="javascript" type="text/javascript">
<!--
document.getElementById("HTCs5").NumericOnly.setDefaultValue("0000");
//-->
</SCRIPT>
Áö±Ý±îÁö ¿ì¸®µéÀÌ ³íÀÇÇß´ø ³»¿ëµéÀÌ HTCs ¸¦ º¸´Ù È¿°úÀûÀ¸·Î »ç¿ëÇϱâ À§ÇØ ¿ä±¸µÇ¾îÁö´Â °¡Àå ±âÃÊÀûÀÎ »çÇ×µéÀ̾ú´Ù¸é Áö±ÝºÎÅÍ »ìÆìº¸°íÀÚ ÇÏ´Â ³»¿ëµéÀº HTCs ÀÇ ÀáÀç·ÂÀ» ±Ø´ëÈ­½Ãų ¼ö ÀÖ´Â ÀÀ¿ë ¹æ¹ý¿¡ °üÇÑ °ÍÀÌ´Ù. ÀÌ¿Í °ü·ÃÇÏ¿© ¿©·¯°¡Áö Èï¹Ì·Î¿î »ç·ÊµéÀÌ ÀÖÀ» ¼ö ÀÖ°ÚÁö¸¸ ±× Áß¿¡¼­µµ ÇÊÀÚ°¡ °³ÀÎÀûÀ¸·Î ¸¹Àº °ü½ÉÀ» °¡Áö°í ÀÖ´Â ¿µ¿ªÀº º»¹®ÀÇ ¼­µÎ¿¡¼­ °£´ÜÇÏ°Ô ¾ð±ÞÇÑ ¹Ù¿Í °°ÀÌ ASP .NET À¥ »ç¿ëÀÚ ÁöÁ¤ ÄÁÆ®·Ñ°ú ¿¬µ¿ÇÏ¿© ¸ðµç ȤÀº °ÅÀÇ ´ëºÎºÐÀÇ Å¬¶óÀÌ¾ðÆ® »çÀÌµå ½ºÅ©¸³Æ®¸¦ HTCs ·Î ´ëüÇÏ´Â ±â¹ýÀÌ´Ù. ±×µ¿¾È ¾÷¹«ÀÇ ÀÏȯÀ¸·Î¼­, ¶Ç´Â ÇнÀÀ» ¸ñÀûÀ¸·Î ³ª¸§´ë·Î ASP .NET À¥ »ç¿ëÀÚ ÁöÁ¤ ÄÁÆ®·ÑÀ» ÀÛ¼ºÇϸ鼭 ¾ðÁ¦³ª ºÒ¸¸½º·¯¿ü´ø Á¡ÀÌ ¹Ù·Î ¼­¹ö »çÀ̵å ÀÛ¾÷ ¿µ¿ª¿¡ ´ëÇØ¼­´Â °ú°Å ASP ÇÁ·Î±×·¡¹Ö ¸ðµ¨¿¡ ºñÇØ ºñ¾àÀûÀÎ ¼öÁØÀ¸·Î Çâ»óµÈ ¸ðµ¨À» .NET ÇÁ·¹ÀÓ¿öÅ©¿¡¼­ ±âº»ÀûÀ¸·Î Á¦°øÇØÁÖÁö¸¸, ¹Ý¸é Ŭ¶óÀÌ¾ðÆ® »çÀÌµå ½ºÅ©¸³Æ® ÀÛ¾÷ ¿µ¿ª¿¡ ´ëÇØ¼­´Â Àϸ»ÀÇ Áøº¸µµ ¾ø¾ú´Ù´Â Á¡À̾ú´Ù. Çö½ÇÀûÀ¸·Î »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º¿Í °ü·ÃµÈ ÀÚ¹Ù½ºÅ©¸³Æ® Äڵ带 ¿ÏÀüÈ÷ ÀÛ¾÷À¸·ÎºÎÅÍ ¹èÁ¦ÇÒ ¼ö ¾ø´Â »óȲ¿¡¼­ ÀÌ·¯ÇÑ Á¦¾àÀº À¢Áö ¹ÝÂÊÂ¥¸® ÄÄÆ÷³ÍÆ®¸¦ ÀÛ¼ºÇÏ´Â µíÇÑ ±âºÐ¸¸À» ´À³¢°Ô ÇÒ »ÓÀ̾ú´Ù. ±×·¯³ª ÀÌÁ¦´Â ASP .NET À¥ »ç¿ëÀÚ ÁöÁ¤ ÄÁÆ®·Ñ¿¡ HTCs ¸¦ µµÀÔÇÏ¿© ¹®Á¦Á¡ÀÇ ´ëºÎºÐÀ» ¸»²ûÇÏ°Ô ÇØ¼ÒÇÒ ¼ö ÀÖ°Ô µÇ¾ú´Ù. ºñ·Ï HTCs °¡ ÀÎÅÍ³Ý ÀͽºÇ÷η¯ ȯ°æ¿¡¼­¸¸ µ¿ÀÛÇϱâ´Â ÇÏÁö¸¸ ±â¾÷ü ³»ºÎ¿¡¼­¸¸ °¡µ¿µÇ´Â ½Ã½ºÅÛ°ú °°ÀÌ »ç¿ëÀÚ È¯°æ¿¡ ´ëÇÑ ±âº»ÀûÀÎ Á¤Àǰ¡ ¹Ì¸® ÀÌ·ç¾îÁö´Â ȯ°æ¿¡¼­´Â ±â´ëÇÑ ¼öÁØÀ» ³Ñ¾î¼­´Â È¿°ú¸¦ ¾òÀ» ¼ö ÀÖÀ» °ÍÀ̶ó´Â°Ô ÇÊÀÚÀÇ °ßÇØ´Ù.

´Ù¸¸ ÇÑ °¡Áö ¾ÈŸ±î¿î »ç½ÇÀº º»¹® ÀÚü´Â ¾îµð±îÁö³ª HTCs ¿¡ °üÇØ¼­ ³íÀÇÇϰí ÀÖ´Â ¹®¼­À̹ǷΠºÐ·®¿¡ ´ëÇÑ °í·Á³ª ±âŸ ¿©·¯°¡Áö ÀÌÀ¯·Î ÀÎÇØ¼­ Áö±Ý ³íÀÇÇϰíÀÚ ÇÏ´Â ASP .NET À¥ »ç¿ëÀÚ ÁöÁ¤ ÄÁÆ®·Ñ¿¡ ´ëÇÑ Àü¹ÝÀûÀÎ ¿µ¿ªµéÀ» ¸ðµÎ »ìÆìº¼ ¼ö´Â ¾ø´Ù´Â Á¡ÀÌ´Ù. °Ô´Ù°¡ ÇÊÀÚ ¿ª½Ãµµ ¾ÆÁ÷±îÁö´Â ASP .NET À¥ »ç¿ëÀÚ ÁöÁ¤ ÄÁÆ®·Ñ¿¡ ´ëÇÑ Áö½ÄÀÌ ¸¹ÀÌ ºÎÁ·ÇÏ´Ù°í ½º½º·Î »ý°¢Çϰí Àֱ⠶§¹®¿¡ º»°ÝÀûÀÎ ³íÀǸ¦ ÁøÇàÇϱ⿡´Â Ä¿´Ù¶õ ¹«¸®°¡ µû¸¥´Ù´Â Á¡µµ ¶Ç ´Ù¸¥ ÇÑ °¡Áö ÀÌÀ¯ÀÌ´Ù. µû¶ó¼­ º»¹®¿¡¼­´Â ¿©·¯ºÐµéÀÌ ÀÌ¹Ì °£´ÜÇÑ ASP .NET À¥ »ç¿ëÀÚ ÁöÁ¤ ÄÁÆ®·ÑÀ» Á÷Á¢ ÀÛ¼ºÇØ º» °æÇèÀÌ Àְųª, ÃÖ¼ÒÇÑÀÇ ±âº»ÀûÀÎ Áö½ÄÀº º¸À¯Çϰí ÀÖ´Ù´Â °¡Á¤ÇÏ¿¡ ¸ðµç ³»¿ëÀ» ÁøÇàÇϵµ·Ï ÇÒ °ÍÀÌ´Ù. ±×·¯³ª ÄÚµå ÀÚü°¡ ±×´ÙÁö ¾î·ÆÁö ¾ÊÀ» »Ó´õ·¯ ÄÁÆ®·Ñ ºô´õ³ª ÄÁÆ®·Ñ µðÀÚÀ̳Ê, ¶Ç´Â Çü½Ä º¯È¯±â¿Í °°Àº °í±Þ ±â¹ýÀº ÀüÇô »ç¿ëÇÏÁö ¾Ê¾ÒÀ¸¹Ç·Î Äڵ常 º¸´õ¶óµµ ÀÌÇØÇϴµ¥ Å« ¹«¸®´Â ¾øÀ» °ÍÀ̶ó´Â »ý°¢ÀÌ´Ù. ÀÛ¾÷ ¸ñÇ¥ ÀÚü´Â »ó´çÈ÷ ´Ü¼øÇѵ¥, ¿ì¸®µéÀÌ ÀÛ¼ºÇÑ HTCs ¸¦ ASP .NET ¿¡¼­ Á¦°øÇØÁÖ´Â ±âº» TextBox ¼­¹ö ÄÁÆ®·Ñ°ú °áÇÕÇÏ¿© »õ·Î¿î ASP .NET À¥ »ç¿ëÀÚ ÁöÁ¤ ÄÁÆ®·ÑÀ» ¸¸µå´Â °ÍÀ¸·Î ´ÙÀ½Àº ±× ÃÖÁ¾ °á°ú¹°ÀÇ Àüü ¼Ò½º ÄÚµåÀÌ´Ù.

    EgoCube.Web.UI.WebControls.1.0.1.1.zip (35k)

¹°·Ð ÀÌ ¼Ò½º Äڵ嵵 ÇÊÀÚÀÇ »çÀÌÆ®¸¦ ÅëÇØ¼­ °ø°³ÇؿԴø ¸ðµç ÇÁ·Î±×·¥µé°ú ¸¶Âú°¡Áö·Î ¼Ò½º ÄÚµå ÀÚü ¹× µðÀÚÀÎ, ÁÖ¼® µîÀ» Æ÷ÇÔÇÑ ÇÁ·Î±×·¥ÀÇ ¸ðµç ³»¿ëÀ» ¼öÁ¤Çϰųª Ãß°¡ÇÏ¿© Àç¹èÆ÷ ÇÒ ¼ö ÀÖÀ¸¸ç »ó¾÷ÀûÀÎ ¿ëµµ¸¦ Æ÷ÇÔÇÑ ¸ðµç À¯ÇüÀÇ ¸ñÀû¿¡ ÀÖ¾î ±× ¾î¶°ÇÑ Á¾·ùÀÇ Á¦¾àµµ Á¸ÀçÇÏÁö ¾Ê´Â´Ù. ±×·¯³ª ÀÌ Äڵ带 ¼öÁ¤ÇÏ¿© Á¦ÀÛÇÑ ÀÚ½ÅÀÇ 2 Â÷ Á¦ÀÛ¹°¿¡ ´ëÇÑ ±Ç¸®¸¦ ³²¿ëÇÏ¿© ´Ù¸¥ »ç¿ëÀÚµéÀÌ ÀÌ ¼Ò½º Äڵ带 ÀÚÀ¯·Ó°Ô »ç¿ëÇÒ ¼ö ÀÖ´Â ±Ç¸®¸¦ Á¦ÇÑÇÏÁö´Â ¸øÇÑ´Ù. ÀÌ¿Í °ü·ÃÇÏ¿© º¸´Ù ÀÚ¼¼ÇÑ ³»¿ëÀ» ¾Ë°í ½ÍÀ¸½Å ºÐµéÀº ÇÊÀÚ°¡ ÀúÀ۱ǿ¡ ´ëÇÑ ÀÔÀåÀ» °ø½ÄÀûÀ¸·Î Á¤¸®ÇÏ¿© ÀÛ¼ºÇÑ 'ECUM ¹öÀü 0.0.2b ÀÇ ÀúÀÛ±Ç °ü·Ã »çÇ×' ÀÇ ³»¿ëÀ» Âü°íÇϱ⠹ٶõ´Ù. ºñ·Ï ÇØ´ç ¹®¼­°¡ ¶Ç ´Ù¸¥ º°°³ÀÇ ÇÁ·Î±×·¥ÀÎ ECUM ¹öÀü 0.0.2b ¿¡ °üÇÑ ¹®¼­³»¿¡ ÀÛ¼ºµÇ¾îÁ® ÀÖ±â´Â ÇÏÁö¸¸ ÇØ´ç ¹®¼­¿¡¼­ ¹àÈ÷°í ÀÖ´Â ¹Ù¿Í °°ÀÌ Æ¯º°ÇÏ°Ô ÀúÀ۱ǰú °ü·ÃµÈ ¾ð±ÞÀ» º°µµ·Î ÇÏÁö ¾Ê´Â ÀÌ»ó ÇÊÀÚ°¡ °ø°³ÇÏ´Â ¸ðµç ÇÁ·Î±×·¥Àº »ó±â ¹®¼­ÀÇ ±ÔÁ¤À» µû¸¥´Ù´Â Á¡¿¡ À¯ÀÇÇϱ⠹ٶõ´Ù.

±×·¯¸é Àü¹ÝÀûÀÎ ÀÛ¾÷ °úÁ¤À» »ìÆìº¸±â¿¡ ¾Õ¼­ ¸ÕÀú °á°ú¹°ÀÌ ¾î¶»°Ô »ý¼ºµÇ´ÂÁö¸¦ »ìÆìº¸±â·Î ÇÏÀÚ. ¹«¾ùº¸´Ùµµ °¡Àå ¸ÕÀú ¤°í ³Ñ¾î°¡¾ß ÇÒ Á¡Àº ÄÄÆÄÀÏµÈ ÃÖÁ¾ °á°ú¹°ÀÌ ´Ü ÇϳªÀÇ DLL ÆÄÀϸ¸À¸·Î ÀÌ·ç¾îÁø´Ù´Â °ÍÀÌ´Ù. Áï, ¸¶Áö¸· ¹èÆ÷ ´Ü°è¿¡¼­ ÃÖÁ¾ °³¹ßÀÚ¿¡°Ô Àü´ÞµÇ´Â ÆÄÀÏÀº ¿ÀÁ÷ ÇϳªÀÇ DLL »ÓÀ̶ó´Â °á·ÐÀÌ µÇ´Âµ¥, ÇÊÀÚ°¡ º»¹®À» ÁغñÇϸ鼭 ASP .NET À¥ »ç¿ëÀÚ ÁöÁ¤ ÄÁÆ®·Ñ°ú HTCs ¸¦ ÅëÇÕÇÏ´Â »ç·ÊÀÇ Çϳª·Î ÀÌ »ùÇà ÄÁÆ®·ÑÀ» ¼³°èÇÒ ¶§ °¡Àå ÁÖÀǸ¦ ±â¿ï¿´´ø ºÎºÐÀÌ ¹Ù·Î ÀÌ ºÎºÐÀÌ´Ù. °¡·É ÀÓÀÇÀÇ ½Ã½ºÅÛÀ» ±¸ÃàÇÏ´Â ÇÁ·ÎÁ§Æ®°¡ Á¸ÀçÇÏ°í ´ë·« 10 ¿©¸í ³»¿ÜÀÇ ÇÁ·ÎÁ§Æ® ÆÀÀ¸·Î ±¸¼ºµÈ °³¹ßÀÚµéÀÌ Á¸ÀçÇÑ´Ù°í »ý°¢Çغ¸ÀÚ. ½Ç·ÂÀÌ ¶Ù¾î³­ ÇÑ ¸íÀÇ °³¹ßÀÚ°¡ ÇÁ·ÎÁ§Æ® ³»ºÎ¿ëÀ¸·Î ASP .NET À¥ »ç¿ëÀÚ ÁöÁ¤ ÄÁÆ®·ÑÀ» °³¹ßÇÏ¿© ³ª¸ÓÁö ÆÀ¿øµé¿¡°Ô ¹èÆ÷Çϸé À¥ ÆäÀÌÁö¸¦ °³¹ßÇÏ´Â ÃÖÁ¾ °³¹ßÀÚµéÀÌ ÇØ´ç ÄÁÆ®·ÑÀ» »ç¿ëÇÏ´Â ÇüŶó°í ÇÒ ¶§, ½Å±Ô ÄÁÆ®·ÑÀÌ ¹èÆ÷µÇ°Å³ª ±âÁ¸ÀÇ ÄÁÆ®·ÑÀÌ º¯°æµÇ¾î Àç¹èÆ÷µÇ´Â °æ¿ì, °¡Àå ÀÌ»óÀûÀÎ »óȲÀº ÃÖÁ¾ °³¹ßÀÚµéÀÌ ÇØ´ç ÄÁÆ®·Ñ¿¡ ´ëÇØ¼­ ±× ¾î¶°ÇÑ ½Å°æµµ ¾²Áö ¾ÊÀ» ¼ö Àִ ȯ°æÀÏ °ÍÀÌ´Ù. Á¶±Ý ´õ ±¸Ã¼ÀûÀ¸·Î ¸»Çغ»´Ù¸é ÃÖÁ¾ °³¹ßÀÚµéÀº HTCs °¡ Á¸ÀçÇÏ°Ô µÉ °æ·Î³ª ÄÁÆ®·ÑÀÇ ¹öÀü µî ÀÚÁú±¸·¹ÇÑ ÀÏüÀÇ »çÇ׵鿡 ´ëÇØ¼­ ½Å°æ¾²Áö ¾Ê¾Æµµ °³¹ß¿¡´Â ÀüÇô ÁöÀåÀÌ ¾ø¾î¾ß¸¸ ÇÑ´Ù. ±×·± ÀÌÀ¯·Î ÀÌ »ùÇà ASP .NET À¥ »ç¿ëÀÚ ÁöÁ¤ ÄÁÆ®·ÑÀº ÄÄÆÄÀÏµÈ ÄÚµå»Ó¸¸ ¾Æ´Ï¶ó HTCs ¸¦ Æ÷ÇÔÇÑ ¸ðµç À¯ÇüÀÇ ¸®¼Ò½ºµéÀÌ DLL ÆÄÀÏÀÇ ³»ºÎ¿¡ Æ÷ÇԵǾîÁöµµ·Ï ¼³°èµÇ¾úÀ¸¸ç ÃÖÃÊ ÀÏȸ ·±Å¸Àӽ𡠵Ǿ¾ß ºñ·Î¼Ò HTCs °¡ DLL ÆÄÀϷκÎÅÍ ÃßÃâµÇ¾îÁ® ¹Ì¸® ÁöÁ¤µÈ Æú´õ¿¡ »ý¼ºµÇµµ·Ï µÇ¾îÀÖ´Ù. ±×¸®°í ½ÇÁúÀûÀÎ ÃÖÁ¾ °á°ú¹°¿¡ ÇØ´çÇÏ´Â HTML ÀÇ Å±״ ÀÌ ÃßÃâµÈ HTCs ¸¦ ¸µÅ©Çϵµ·Ï ÀÚµ¿ÀûÀ¸·Î ·»´õ¸µµÇ¾îÁö´Âµ¥, ÃßÃâµÈ HTCs °¡ ÁöÁ¤µÈ °æ·Î¿¡ ÀúÀåµÉ ¶§ DLL ÆÄÀÏÀÇ ÇöÀç ¹öÀü Á¤º¸¸¦ ÆÄÀÏ¸í¿¡ ¹Ý¿µÇϵµ·Ï ¼³°è°¡ µÇ¾î À־ HTCs °¡ º¯°æµÇ´Â °æ¿ì¿¡µµ DLL ÆÄÀÏÀÇ ¹öÀü¸¸ Á¶Á¤ÇØÁÖ¸é HTCs ÀÇ »õ·Î¿î ¹öÀüÀÌ Àüü À¥ ÇÁ·ÎÁ§Æ®·Î Áï½Ã ÀüÆÄµÉ ¼ö ÀÖµµ·Ï ±¸¼ºµÇ¾îÁ® ÀÖ´Ù. µû¶ó¼­ À¥ ÆäÀÌÁö¸¸À» °³¹ßÇÏ´Â ÃÖÁ¾ °³¹ßÀÚÀÇ ÀÔÀå¿¡¼­´Â ºÎÂ÷ÀûÀÎ ³»¿ëµéÀ» ÀüÇô ½Å°æ¾²Áö ¾Ê¾Æµµ, ¹èÆ÷µÈ DLL ÆÄÀÏÀ» ASP .NET À¥ ÀÀ¿ë ÇÁ·Î±×·¥ ÇÁ·ÎÁ§Æ®¿¡¼­ ÂüÁ¶Çϰí, µµ±¸ »óÀÚ¿¡ ASP .NET À¥ »ç¿ëÀÚ ÁöÁ¤ ÄÁÆ®·ÑÀ» µî·ÏÇÑ ´ÙÀ½, ASP .NET ¿¡¼­ ±âº»À¸·Î Á¦°øµÇ´Â ¼­¹ö ÄÁÆ®·ÑÀ» »ç¿ëÇÏ´Â ¹æ¹ý°ú µ¿ÀÏÇÑ ¹æ¹ýÀ¸·Î ÀÌ ÄÁÆ®·ÑÀ» »ç¿ëÇÏ´Â °Í¸¸À¸·Îµµ HTCs ¸¦ µµÀÔÇÏ¿© ¾òÀ» ¼ö ÀÖ´Â ¿©·¯°¡Áö ÀåÁ¡µéÀ» °í½º¶õÈ÷ Ȱ¿ëÇÒ ¼ö ÀÖ´Ù. °Ô´Ù°¡ ASP .NET À¥ »ç¿ëÀÚ ÁöÁ¤ ÄÁÆ®·Ñ °³¹ßÀÚÀÇ ÀÔÀå¿¡¼­µµ Àü¹ÝÀûÀÎ HTCs °ü¸®°¡ Çõ½ÅÀûÀ¸·Î °£´ÜÇØÁö°Ô µÈ´Ù.

´Ù¸¸ Áö±Ý ÇÊÀÚ°¡ ¼³¸íÇϰí ÀÖ´Â ÀÌ·¯ÇÑ ASP .NET À¥ »ç¿ëÀÚ ÁöÁ¤ ÄÁÆ®·ÑÀÇ ¼³°è ¹æ¹ýÀ̳ª ±¸Çö»óÀÇ ¸î °¡Áö Ư¡µéÀº HTCs ¸¦ º¸´Ù È¿À²ÀûÀ¸·Î Ȱ¿ëÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» ´Ù¹æ¸éÀ¸·Î ¸ð»öÇÑ ³¡¿¡ ¾ò¾îÁø Áö±ØÈ÷ Á¶±×¸¶ÇÑ ÇÊÀÚÀÇ °³ÀÎÀûÀÎ ¼º°úÀÏ »ÓÀ̶ó´Â Á¡À» °­Á¶ÇÏ°í ½Í´Ù. °áÄÚ ÀÌ·¯ÇÑ ³»¿ëµéÀÌ ´Ù¸¥ ¹æ¹ýµé¿¡ ºñÇÏ¿© ±â¼úÀûÀÎ ¿ìÀ§¿¡ ÀÖ´Ù´ø°¡ ÇÏÁö´Â ¾ÊÀ¸¸ç ´ÜÁö ÇϳªÀÇ Èï¹Ì·Î¿î ±¸Çö »ç·Ê Á¤µµ·Î ¹Þ¾Æµé¿© ÁÖ¾úÀ¸¸é ÇÑ´Ù. ¾î¼¸é Áö±Ý º»¹®À» ÀÐ°í °è½Å ºÐµé Áß¿¡¼­µµ ÇÊÀÚ°¡ Á¦¾ÈÇϰí ÀÖ´Â ¹æ¹ýº¸´Ù ´õ ÁÁÀº ¾ÆÀ̵ð¾î¸¦ ¸Ó¸®¼ÓÀ¸·Î ¶°¿Ã¸®°í °è½Å ºÐÀÌ ÀÖÀ»Áöµµ ¸ð¸¥´Ù. ±×¸®°í Áö±ÝºÎÅÍ´Â ¼³¸í»óÀÇ ÆíÀǸ¦ À§ÇØ ÀÌ »ùÇà ASP .NET À¥ »ç¿ëÀÚ ÁöÁ¤ ÄÁÆ®·ÑÀ» HTCs TextBox ¼­¹ö ÄÁÆ®·ÑÀ̶ó°í °¡ÄªÇÏ¿© ºÎ¸£±â·Î ÇϰڴÙ. HTCs TextBox ¼­¹ö ÄÁÆ®·ÑÀÇ ½ÇÁ¦ À̸§Àº ASP .NET ¿¡¼­ ±âº»ÀûÀ¸·Î Á¦°øµÇ´Â TextBox ¼­¹ö ÄÁÆ®·Ñ°ú µ¿ÀÏÇÑ TextBox ¼­¹ö ÄÁÆ®·ÑÀÌ´Ù. ¹°·Ð ±× ³×ÀÓ½ºÆäÀ̽º´Â EgoCube.Web.UI.WebControls ¶ó´Â ÀüÇô º°°³ÀÇ ³×ÀÓ½ºÆäÀ̽º·Î ¼³Á¤µÇ¾î ÀÖÀ¸¹Ç·Î ¼­¹ö ÄÁÆ®·ÑÀÇ Å¬·¡½º°¡ Ãæµ¹Çϰųª ÇÏÁö´Â ¾Ê´Â´Ù. ±×¸®°í Áö±ÝºÎÅÍÀÇ »ìÆìº¸°Ô µÉ ¸ðµç ³íÀǵéÀº ¸¶ÀÌÅ©·Î¼ÒÇÁÆ® ºñÁÖ¾ó ½ºÆ©µð¿À .NET 2003 ¹öÀüÀ» »ç¿ëÇÏ¿© ÀÛ¾÷ÇÑ´Ù°í °¡Á¤ÇÑ´Ù.

¸ÕÀú Å×½ºÆ®¿ë À¥ ÆäÀÌÁö¸¦ ¸¸µé±â À§ÇÑ ASP .NET À¥ ÀÀ¿ë ÇÁ·Î±×·¥ ÇÁ·ÎÁ§Æ®¸¦ »ý¼ºÇÑ´Ù. ±×¸®°í º»¹®¿¡¼­ ´Ù¿î·Îµå ¹ÞÀº ¾ÐÃà ÆÄÀÏ¿¡ µé¾îÀÖ´Â À¥ ÄÁÆ®·Ñ ¶óÀ̺귯¸® ÇÁ·ÎÁ§Æ®¸¦ ¹æ±Ý »ý¼ºÇÑ ASP .NET À¥ ÀÀ¿ë ÇÁ·Î±×·¥ ÇÁ·ÎÁ§Æ®ÀÇ ¼Ö·ç¼Ç¿¡ Ãß°¡ÇÏ¿© ´ÙÀ½°ú °°Àº ¼Ö·ç¼Ç ±¸Á¶¸¦ ±¸¼ºÇÑ´Ù. Àü¹ÝÀûÀ¸·Î ¼Ö·ç¼ÇÀÇ ±¸Á¶°¡ ´ë´ÜÈ÷ ´Ü¼øÇÏ°í ±¸¼ºÀǵµ ¶ÇÇÑ ¸íÈ®ÇϹǷΠ±¸Á¶¸¦ ÀÌÇØÇϴµ¥ º°´Ù¸¥ ¾î·Á¿òÀº ¾øÀ» °ÍÀÌ´Ù. ±× ´ÙÀ½¿¡´Â À¥ ÄÁÆ®·Ñ ¶óÀ̺귯¸® ÇÁ·ÎÁ§Æ®¸¦ ASP .NET À¥ ÀÀ¿ë ÇÁ·Î±×·¥ ÇÁ·ÎÁ§Æ®¿¡ ÇÁ·ÎÁ§Æ® ÇüÅ·ΠÂüÁ¶ÇÑ´Ù. ¹°·Ð ÄÄÆÄÀÏ µÈ DLL ÆÄÀÏÀ» Á÷Á¢ ÂüÁ¶ÇÒ ¼öµµ ÀÖ°ÚÁö¸¸ Áö±Ý ´Ü°è¿¡¼­´Â ÇÁ·ÎÁ§Æ® ÂüÁ¶ÀÇ ÇüŰ¡ ´õ ¹Ù¶÷Á÷ÇÒ °ÍÀÌ´Ù.


¸¶ÀÌÅ©·Î¼ÒÇÁÆ® ºñÁÖ¾ó ½ºÆ©µð¿À .NET 2003 ¼Ö·ç¼Ç ±¸¼º


±×¸®°í ÃÖÁ¾ °³¹ßÀÚµéÀÌ ºñ±³Àû Æí¸®ÇÏ°Ô À¥ ÆäÀÌÁö¸¦ °³¹ßÇÒ ¼ö ÀÖÀ¸·Á¸é ¾Æ¹«·¡µµ ÄÁÆ®·ÑÀÌ µµ±¸ »óÀÚ¿¡ µî·ÏµÇ¾î ÀÖ´Â ÆíÀÌ ÁÁÀ» °ÍÀÌ´Ù. ±×·¯¹Ç·Î À̹ø¿¡´Â HTCs TextBox ÄÁÆ®·ÑÀ» µµ±¸ »óÀÚ¿¡ µî·ÏÇØº¸ÀÚ. ¸¶ÀÌÅ©·Î¼ÒÇÁÆ® ºñÁÖ¾ó ½ºÆ©µð¾î .NET 2003 ÀÇ 'µµ±¸(T)' ¸Þ´º¿¡¼­ 'µµ±¸ »óÀÚ Ç׸ñ Ãß°¡/Á¦°Å(X)...' ¸¦ ½ÇÇàÇϰųª, Á÷Á¢ µµ±¸ »óÀÚ¿¡¼­ ¸¶¿ì½º ¿À¸¥ÂÊ ¹öưÀ» Ŭ¸¯ÇÏ¿© ÆË¾÷ ¸Þ´º¸¦ ¶ç¿ì°í 'Ç׸ñ Ãß°¡/Á¦°Å(I)...' ¸Þ´º¸¦ ½ÇÇàÇÏ¸é ´ÙÀ½°ú °°ÀÌ 'µµ±¸ »óÀÚ »ç¿ëÀÚ ÁöÁ¤' ´ëÈ­ »óÀÚ°¡ ³ªÅ¸³­´Ù.


'µµ±¸ »óÀÚ »ç¿ëÀÚ ÁöÁ¤' ´ëÈ­ »óÀÚ


ÀÌ 'µµ±¸ »óÀÚ »ç¿ëÀÚ ÁöÁ¤' ´ëÈ­ »óÀÚ¿¡¼­ 'ã¾Æº¸±â(B)...' ¹öưÀ» Ŭ¸¯Çϰí, ´Ù¿î·Îµå ¹ÞÀº À¥ ÄÁÆ®·Ñ ¶óÀ̺귯¸® ÇÁ·ÎÁ§Æ®ÀÇ bin Æú´õ ÇÏÀ§¿¡ À§Ä¡ÇÑ Debug Æú´õ³ª Release Æú´õ¿¡ ÀÖ´Â EgoCube.Web.UI.WebControls.dll ÆÄÀÏÀ» ¼±ÅÃÇÏ¸é ´ÙÀ½°ú °°ÀÌ ÄÁÆ®·ÑÀÌ µî·ÏµÈ´Ù. ÀÌ¹Ì ¼³¸íÇß´ø °Íó·³ ÄÁÆ®·Ñ ÀÚüÀÇ À̸§Àº ASP .NET ¿¡¼­ ±âº»À¸·Î Á¦°øµÇ´Â TextBox ¼­¹ö ÄÁÆ®·Ñ°ú µ¿ÀÏÇÑ TextBox ¼­¹ö ÄÁÆ®·ÑÀÌÁö¸¸ ³×ÀÓ½ºÆäÀ̽º¿Í ¾î¼Àºí¸® À̸§À» »ìÆìº¸¸é ±× º»ÁúÀº ÀüÇô ´Ù¸¥ ÄÁÆ®·ÑÀ̶ó´Â Á¡À» ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù.


'µµ±¸ »óÀÚ »ç¿ëÀÚ ÁöÁ¤' ´ëÈ­ »óÀÚ


ÀÌÁ¦ 'È®ÀÎ' ¹öưÀ» ´­·¯¼­ 'µµ±¸ »óÀÚ »ç¿ëÀÚ ÁöÁ¤' ´ëÈ­ »óÀÚ¸¦ ´Ý°í, µµ±¸ »óÀÚ¸¦ »ìÆìº¸¸é ´ÙÀ½°ú °°ÀÌ ¿©·¯°¡Áö µµ±¸ »óÀÚ Åǵé Áß Çϳª - ´ëºÎºÐÀÇ °æ¿ì ÀÏ¹Ý ÅÇ - ¿¡ µî·ÏµÈ HTCs TextBox ÄÁÆ®·ÑÀ» ½±°Ô ãÀ» ¼ö ÀÖÀ» °ÍÀÌ´Ù. ±×¸®°í ´«Ä¡°¡ ºü¸£½Å ºÐµéÀº ÀÌ¹Ì ´ëºÎºÐ ÁüÀÛÇÏ°í °è½Ã°ÚÁö¸¸ Àç¹Ì»ï¾Æ ¾ê±âÇØº»´Ù¸é ÇÊÀÚÀÇ ±×·¡ÇÈ ÇÁ·Î±×·¥ ½Ç·ÂÀÌ Å©°Ô ºÎÁ·ÇÑ °ü°è·Î ±âº» TextBox ¼­¹ö ÄÁÆ®·Ñ¿¡¼­ º¹»çÇÑ ¾ÆÀÌÄÜÀ» ÅØ½ºÆ® »ö»ó¸¸ ¾à°£ º¯°æÇؼ­ »õ ÄÁÆ®·Ñ¿¡ »ç¿ëÇß´Ù. ¾ðÁ¦³ª ±×·¸Áö¸¸ ÇÊÀÚ¿¡°Ô ¾ÆÀÌÄÜ ¸¸µé±â¶õ ³Ê¹«³ªµµ Èûµç ÀÛ¾÷ÀÌ´Ù.


µµ±¸ »óÀÚ¿¡ µî·ÏµÈ HTCs TextBox ÄÁÆ®·Ñ


ÄÁÆ®·ÑÀ» »ç¿ëÇϱâ À§ÇÑ ´ëºÎºÐÀÇ ÀÛ¾÷µéÀÌ ´ëºÎºÐ ¿Ï·áµÇ¾úÀ¸¹Ç·Î ÀÌÁ¦ ³²Àº ÀÏÀº µî·ÏµÈ HTCs TextBox ÄÁÆ®·ÑÀ» »ç¿ëÇÏ´Â ÀÏ »ÓÀÌ´Ù. ÀϹÝÀûÀÎ ASP .NET ¼­¹ö ÄÁÆ®·Ñµé°ú ¸¶Âú°¡Áö·Î ¸¶¿ì½º¸¦ ÀÌ¿ëÇÑ µå·¡±× & µå¶ø ±â´ÉÀ» Áö¿øÇϸç, À§ÀÇ À̹ÌÁö¿¡¼­ º¼ ¼ö ÀÖ´Â µÎ ¹øÂ° TextBox ¼­¹ö ÄÁÆ®·ÑÀÌ ¹Ù·Î ±×·± ¹æ¹ýÀ» ÅëÇØ¼­ »ý¼ºµÈ °ÍÀÌ´Ù. ±×»Ó¸¸ ¾Æ´Ï¶ó µðÀÚÀÎ ºä »óÅ¿¡¼­ ÆäÀÌÁö¿¡ ¿Ã·ÁÁø HTCs TextBox ¼­¹ö ÄÁÆ®·ÑÀ» ¸¶¿ì½º·Î ¼±ÅÃÇÏ¸é ´ÙÀ½°ú °°ÀÌ ÄÁÆ®·Ñ¿¡ ´ëÀÀÇÏ´Â ¼Ó¼ºµéÀÌ ¼Ó¼º â¿¡ ¹Ý¿µµÇ¾î Ãâ·ÂµÈ´Ù. ´Ù½Ã ¸»Çؼ­ ASP .NET ¿¡¼­ ±âº»À¸·Î Á¦°øµÇ´Â ¼­¹ö ÄÁÆ®·Ñµé°ú ±×´ÙÁö Â÷À̳¯ ¹Ù°¡ ¾ø´Â °ÍÀÌ´Ù. ±×·¯³ª µðÀÚÀΠŸÀÓ Áö¿ø ±â´É°ú °ü·ÃÇÏ¿© °áÁ¤ÀûÀ¸·Î ºÎÁ·ÇÑ ±â´ÉÀÌ ÇÑ °¡Áö Á¸ÀçÇϴµ¥ ¹Ù·Î HTML ºä¿¡¼­´Â ÀÎÅÚ¸®¼¾½º ±â´ÉÀÌ µ¿ÀÛÇÏÁö ¾Ê´Â´Ù´Â Á¡ÀÌ´Ù. HTML ºä¿¡¼­ÀÇ ÀÎÅÚ¸®¼¾½º ±â´É Áö¿øÀº ÇöÀçÀÇ ¸¶ÀÌÅ©·Î¼ÒÇÁÆ® ºñÁÖ¾ó ½ºÆ©µð¿À .NET 2003 ¹öÀü °³¹ß ȯ°æÇÏ¿¡¼­ ´Ù¼Ò º¹ÀâÇÒ »Ó¸¸ ¾Æ´Ï¶ó ¹èÆ÷¶ó´Â °üÁ¡¿¡¼­ º¼ ¶§ »ó´çÈ÷ ¹ø°Å·Î¿î ÀÛ¾÷À» ¿ä±¸ÇÑ´Ù. °Ô´Ù°¡ º¸´Ù ¹Î°¨ÇÑ ¹®Á¦´Â ±×·¯ÇÑ ÀÛ¾÷µéÀÌ ¼­¹ö ÄÁÆ®·Ñ °³¹ßÀÚµé »Ó¸¸ ¾Æ´Ï¶ó ÄÁÆ®·ÑÀ» »ç¿ëÇÏ´Â À¥ °³¹ßÀڵ鿡°Ô±îÁö ¿ä±¸µÇ¾îÁø´Ù´Â Á¡À¸·Î¼­, º»¹®¿¡¼­´Â ±»ÀÌ ¹®¸ÆÀ» È寮·Á°¡¸é¼­±îÁö º°µµ·Î ³íÀǸ¦ ÁøÇàÇÒ ÇÊ¿ä´Â ¾ø´Ù°í ÆÇ´ÜµÇ¾î HTML ºä¿¡¼­ÀÇ ÀÎÅÚ¸®¼¾½º ±â´É Áö¿øÀº ±× ±¸ÇöÀ» »ý·«Çß´Ù´Â Á¡À» °¨¾ÈÇϱ⠹ٶõ´Ù.


HTCs TextBox ÄÁÆ®·Ñ ¼Ó¼º


±×·±µ¥ À§ÀÇ À̹ÌÁö¸¸ ³õ°í º»´Ù¸é ¼Ó¼º â¿¡ ³ªÅ¸³­ ¼Ó¼ºµéÀÇ Á¾·ù°¡ ´ë´ÜÈ÷ ´Ù¾çÇϹǷΠÀ¥ »ç¿ëÀÚ ÁöÁ¤ ÄÁÆ®·Ñ¿¡ ´ëÇÑ ±âº»ÀûÀÎ Áö½ÄÀÌ ¾øÀ¸½Å ºÐµéÀº ÇÊÀÚ°¡ ÀÌ ¸ðµç ¼Ó¼ºµéÀ» Á÷Á¢ ±¸ÇöÇÑ °ÍÀ¸·Î ¿ÀÇØÇϱⰡ ½¬¿ï °ÍÀÌ´Ù. ±×·¯³ª ºÎ¸ð Ŭ·¡½º·ÎºÎÅÍ »ó¼Ó¹ÞÀº ¼Ó¼ºµé ¿Ü¿¡ Á÷Á¢ ÄÚµå·Î ±¸ÇöÇÏ¿© Ãß°¡ÇØÁØ ¼Ó¼ºÀº 'µ¿ÀÛ' Ä«Å×°í¸® ÇÏÀ§ÀÇ 'HTCs' ¼Ó¼º°ú 'HTCsDefaultValue' ¼Ó¼º, °íÀÛ ÀÌ·¸°Ô µÎ °¡Áö¿¡ ºÒ°úÇÏ´Ù. ±× ¹ÛÀÇ ³ª¸ÓÁö ¼Ó¼ºµéÀº ¸ðµÎ ASP .NET ¿¡¼­ ±âº»À¸·Î Á¦°øÇØÁÖ´Â TextBox ¼­¹ö ÄÁÆ®·Ñ·ÎºÎÅÍ »ó¼Ó¹ÞÀº °ÍµéÀÏ »ÓÀ¸·Î »ç¿ëÀÚ ÁöÁ¤ ÄÁÆ®·ÑÀ» ÀÛ¼ºÇÒ ¶§¸¶´Ù ÀÌ·¸µí ¸¹Àº ºÐ·®ÀÇ ¼Ó¼ºµéÀ» ¸ðµÎ ÄÚµå·Î Á÷Á¢ ±¸ÇöÇØÁÖ¾î¾ß¸¸ ÇÏ´Â °ÍÀÎÁö ¹Ì¸®ºÎÅÍ ¿°·ÁÇϽô ºÐµéÀº ¾ø±â ¹Ù¶õ´Ù. ½ÇÁ¦·Î TextBox ¼­¹ö ÄÁÆ®·ÑÀ» »ó¼Ó¹Þ´Â ºÎºÐÀΠŬ·¡½º ¼±¾ðºÎÀÇ ÄÚµå´Â ´ÙÀ½°ú °°ÀÌ ¸Å¿ì ÀÏ»óÀûÀÎ Æò¹üÇÑ Äڵ忡 ºÒ°úÇϸç, ÀÌ ´Ü ÇÑ ÁÙÀÇ ÄÚµå·Î ÀÎÇØ¼­ ºÎ¸ð À¥ ¼­¹ö ÄÁÆ®·ÑÀÇ Å¬·¡½º·ÎºÎÅÍ ¸ðµç ¼Ó¼ºµéÀ» »ó¼Ó¹Þ°Ô µÇ´Âµ¥, »ç½Ç ÀÌ´Â ³Ê¹«³ªµµ ´ç¿¬ÇÑ °á°ú¶ó°í ¸»ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

    ...
                    
    public class TextBox : System.Web.UI.WebControls.TextBox
    {
    
    ...
ÄÁÆ®·Ñ¿¡ »õ·Î¿î ¼Ó¼ºÀ» Ãß°¡½Ã۱â À§Çؼ­´Â ÇØ´ç ÄÁÆ®·ÑÀÇ Å¬·¡½º¿¡ ÇÊ¿äÇÑ ¼Ó¼ºÀ» ±¸ÇöÇØÁֱ⸸ ÇÏ¸é µÈ´Ù. ¹°·Ð ¾Æ¹«·¸°Ô³ª ¸¶À½ ³»Å°´Â´ë·Î Ŭ·¡½º ¼Ó¼ºÀ» ±¸ÇöÇϱ⸸ ÇÏ¸é µÇ´Â °ÍÀº ¾Æ´Ï°í ½ÇÁ¦·Î´Â ¿©·¯°¡Áö ´Ù¾çÇÑ ±â¹ýµéÀÌ µ¿¿øµÇÁö¸¸ ±× ±âº»ÀûÀÎ ¿ø¸®´Â À̸¦ Å©°Ô ¹þ¾î³ªÁö ¾Ê´Â´Ù°í ¸»ÇÒ ¼ö ÀÖ´Ù. ƯÈ÷³ª Çü½Ä º¯È¯±â µî°ú °°Àº µðÀÚÀΠŸÀÓ Áö¿ø ±â´ÉÀ̳ª ÅÛÇø´ ¶Ç´Â µ¥ÀÌÅÍ ¹ÙÀεù°ú °°Àº ÄÁÆ®·ÑÀÇ °í±Þ ±â´ÉµéÀ» Á÷Á¢ ±¸ÇöÇÏÁö ¾Ê´Â °æ¿ì¿¡´Â ´õ¿í ±×·¸´Ù. ¿¹¸¦ µé¾î¼­ ¾Æ·¡ÀÇ ÄÚµå´Â ¹æ±Ý Àü¿¡ ¼³¸íÇß´ø HTCs TextBox ¼­¹ö ÄÁÆ®·Ñ¿¡ Ãß°¡µÈ 'HTCs' ¼Ó¼º°ú 'HTCsDefaultValue' ¼Ó¼ºÀÇ ½ÇÁ¦ ±¸Çö ÄÚµåÀÌ´Ù. ¹®¸Æ»ó ´Ù¼Ò È¥¶õ½º·¯¿ï ¼öµµ ÀÖ°ÚÁö¸¸, Category ³ª DefaultValue µî Ŭ·¡½º ¶óÀ̺귯¸®¿¡ ¹Ì¸® Á¤ÀÇµÈ ÀÏ·ÃÀÇ Æ¯¼º (Attribute) µéÀ» »ç¿ëÇÏ¿© ¼Ó¼º â¿¡ Ãâ·ÂµÇ´Â ÄÁÆ®·ÑÀÇ ¼Ó¼º (Property) µéÀ» Á¦¾îÇÏ´Â ºÎºÐ µîÀ» À¯½ÉÈ÷ »ìÆìº¸±â ¹Ù¶õ´Ù. Âü°í·Î ÀÌ·¯ÇÑ Æ¯¼ºµé¿¡ ´ëÇÑ º¸´Ù »ó¼¼ÇÑ Á¤º¸´Â System.ComponentModel ³×ÀÓ½ºÆäÀ̽º¸¦ ÅëÇØ¼­ ¾òÀ» ¼ö ÀÖ´Ù. ±×¸®°í ÇÁ·ÎÆÛƼÀÇ µ¥ÀÌÅ͸¦ ÀúÀåÇϱâ À§Çؼ­ Ŭ·¡½º ³»ºÎ º¯¼ö¸¦ ¼±¾ðÇÏ´Â ´ë½Å ViewState °³Ã¼¸¦ »ç¿ëÇÏ´Â ±â¹ýÀ̶ó´øÁö, 'HTCs' ¼Ó¼ºÀÇ ¸®ÅÏ µ¥ÀÌÅÍ ÇüÀÌ ¿­°ÅÇüÀ̶ó´Â »ç½Ç°ú ±×·Î ÀÎÇØ HTCs' ¼Ó¼ºÀÇ ¼Ó¼º â Ãâ·Â ÇüŰ¡ ÀÚµ¿ÀûÀ¸·Î µå·Ó´Ù¿î ¸®½ºÆ®·Î ³ªÅ¸³­´Ù´Â Á¡ µîµµ ÇÑ ¹ø ´«¿©°Ü º¼¸¸ÇÑ ºÎºÐÀÌ´Ù.

    ...
                    
    #region ÄÁÆ®·Ñ ÇÁ·ÎÆÛƼ

    /// <summary>
    /// ÄÁÆ®·Ñ¿¡ Àû¿ëµÇ´Â HTCs ¸ðµå¸¦ ÁöÁ¤ÇÑ´Ù. ¸¸¾à ¸¶¹«·± °ªµµ ÁöÁ¤µÇÁö 
    /// ¾ÊÀ¸¸é ÄÁÆ®·ÑÀº HTCsType.NotSet À» ÁöÁ¤ÇÑ °Í°ú µ¿ÀÏÇÑ ¸ðµå·Î µ¿ÀÛÇϰí, 
    /// ÀÌ´Â ASP.NET ¿¡¼­ ±âº»À¸·Î Á¦°øµÇ´Â TextBox ÄÁÆ®·ÑÀÇ µ¿ÀÛ°ú 
    /// Á¤È®ÇÏ°Ô µ¿ÀÏÇÑ °ÍÀÌ´Ù.
    /// </summary>
    [Description("ÄÁÆ®·Ñ¿¡ Àû¿ëµÇ´Â HTCs ¸ðµå¸¦ ÁöÁ¤ÇÕ´Ï´Ù.")]
    [Category("Behavior")]
    [DefaultValue(HTCsType.NotSet)]
    public HTCsType HTCs
    {
        get 
        {
            if (this.ViewState["HTCs"] == null)
                return HTCsType.NotSet;
            else
                return (HTCsType) this.ViewState["HTCs"];
        }
        set
        {
            this.ViewState["HTCs"] = value;
        }
    }

    /// <summary>
    /// ÄÁÆ®·ÑÀÌ HTCs ¸ðµå¿¡¼­ µ¿ÀÛµÉ ¶§ Àû¿ëµÇ´Â defaultValue ¼Ó¼º°ªÀ» ÁöÁ¤ÇÑ´Ù. 
    /// ÀÌ ¼Ó¼º°ªÀº ÄÁÆ®·ÑÀÌ HTCs ¸ðµå·Î µ¿ÀÛÇÏÁö ¾Ê´Â °æ¿ì¿¡´Â ¹«½ÃµÈ´Ù. 
    /// </summary>
    [Description("ÄÁÆ®·ÑÀÌ HTCs ¸ðµå¿¡¼­ µ¿ÀÛµÉ ¶§ Àû¿ëµÇ´Â defaultValue ¼Ó¼º°ªÀ»...")]
    [Category("Behavior")]
    [DefaultValue("")]
    public string HTCsDefaultValue
    {
        get
        {
            if (this.ViewState["HTCsDefaultValue"] == null)
                return "";
            else
                return (string) this.ViewState["HTCsDefaultValue"];
        }
        set
        {
            this.ViewState["HTCsDefaultValue"] = value;
        }
    }

    #endregion
    
    ...
±×·¯³ª ¿©·¯ºÐµéÀÌ Á¤¸»·Î ¼¼½ÉÇÏ°Ô ÁÖÀǸ¦ ±â¿ï¿©¼­ »ìÆìºÁ¾ß¸¸ µÉ ºÎºÐÀº Áö±ÝºÎÅÍ ³íÀÇµÉ ¸î °¡Áö ³»¿ëµéÀÌ´Ù. ÀÌ¹Ì ¾Õ¿¡¼­ ¾ê±âÇß´ø °Íó·³ HTCs TextBox ÄÁÆ®·ÑÀº ÄÄÆÄÀÏµÈ ÄÚµå»Ó¸¸ ¾Æ´Ï¶ó HTCs ÆÄÀÏÀ» Æ÷ÇÔÇÑ ¸ðµç À¯ÇüÀÇ ¸®¼Ò½ºµéÀÌ DLL ÆÄÀÏÀÇ ³»ºÎ¿¡ Æ÷ÇԵǾîÁöµµ·Ï ¼³°èµÇ¾î ÀÖ´Ù. ÀÌ·¯ÇÑ °á°ú¸¦ ¾ò±â À§Çؼ­ ¿ì¸®µéÀÌ Ã³¸®ÇØÁÖ¾î¾ß ÇÒ ÀÛ¾÷Àº ¸Å¿ì °£´ÜÇѵ¥, ´ÜÁö DLL ÆÄÀÏ ³»ºÎ¿¡ ÆÐŰ¡ÇϰíÀÚ ÇÏ´Â ¸®¼Ò½º ÆÄÀÏÀÇ 'ºôµå ÀÛ¾÷' ¼Ó¼º°ªÀ» 'Æ÷ÇÔ ¸®¼Ò½º' ·Î ¼³Á¤ÇØ Áֱ⸸ ÇÏ¸é µÈ´Ù. À̸¦Å×¸é ´ÙÀ½ À̹ÌÁö´Â HTCs_Numeric_Only.htc ÆÄÀÏÀÇ ½ÇÁ¦ ¼³Á¤ »óŸ¦ º¸¿©ÁÖ°í ÀÖ´Ù. À̰ÍÀÌ ÇÊ¿äÇÑ ÀÛ¾÷ÀÇ ÀüºÎ´Ù.


'ºôµå ÀÛ¾÷' ¼Ó¼º°ªÀÌ 'Æ÷ÇÔ ¸®¼Ò½º' ·Î ¼³Á¤µÈ HTCs_Numeric_Only.htc ÆÄÀÏ


´ÙÀ½ ´Ü°è·Î ±¸ÇöÇØ¾ß ÇÒ ÀÛ¾÷Àº ÃÖÃÊ ÀÏȸ ·±Å¸Àӽÿ¡ DLL ÆÄÀϷκÎÅÍ HTCs ÆÄÀÏÀÇ ÄÚµå ³»¿ëÀ» ÃßÃâÇÏ¿© ¹Ì¸® ÁöÁ¤ÇØ ³õÀº Æú´õ¿¡ ½ÇÁ¦ ÆÄÀÏÀ» »ý¼ºÇϰí, ·»´õ¸µµÇ´Â HTCs TextBox ÄÁÆ®·ÑÀÇ HTML Äڵ尡 ÀÌ·¸°Ô ¸¸µé¾îÁø HTCs ÆÄÀÏÀ» ¸µÅ©Çϵµ·Ï ó¸®ÇÏ´Â ÀÛ¾÷ÀÌ´Ù. ±×·±µ¥ ½ÇÁ¦·Î ÀÌ·¯ÇÑ Äڵ带 ±¸ÇöÇϱâ Àü¿¡ ¸î °¡Áö ¹Ì¸® °í·ÁÇØºÁ¾ß¸¸ ÇÒ »çÇ×µéÀÌ ÀÖ´Ù. ±× ù ¹øÂ°·Î´Â DLL ÆÄÀϷκÎÅÍ ÃßÃâµÈ HTCs Äڵ带 ±¸Ã¼ÀûÀ¸·Î ¾î¶² Æú´õ¿¡ ÆÄÀÏ·Î »ý¼ºÇÒ °ÍÀÎÁö¸¦ °áÁ¤Çؾ߸¸ ÇÑ´Ù. µÎ ¹øÂ°·Î´Â ÀÌ¹Ì ÄÁÆ®·ÑÀÌ °³¹ßÀڵ鿡°Ô ¹èÆ÷µÈ »óȲ¿¡¼­ ´Ù½Ã HTCs Äڵ尡 º¯°æµÇ´Â °æ¿ì°¡ ¹ß»ýÇÑ´Ù¸é ´ç¿¬È÷ Àç¹èÆ÷µÈ ÄÁÆ®·ÑÀÇ HTCs ÆÄÀÏÀÌ ¹Ý¿µµÇ¾î¾ß¸¸ Çϴµ¥, HTCs ÆÄÀÏÀÌ »ý¼ºµÉ Æú´õ¿¡´Â ÀÌ¹Ì ÀÌÀü ¹öÀüÀÇ HTCs ÆÄÀÏÀÌ Á¸ÀçÇϰí ÀÖÀ» ¼ö ÀÖÀ¸¹Ç·Î, °á±¹ HTCs ÆÄÀϰ£ÀÇ ¹öÀüÀ» ½Äº°ÇÒ ¼ö ÀÖ´Â ¾î¶°ÇÑ ¹æ¾ÈÀÌ ÇÊ¿äÇÏ´Ù´Â Á¡ÀÌ´Ù. ¸¶Áö¸· ¼¼ ¹øÂ°·Î´Â ÀÌ¿Í °°Àº ÀÛ¾÷µéÀ» ó¸®Çϱâ À§ÇØ ÇÊ¿äÇÑ ½ÇÁ¦ Äڵ尡 ¼­¹ö ÄÁÆ®·ÑÀÇ ¶óÀÌÇÁ ½ÎÀÌŬ¾È¿¡¼­ ¾î¶² ´Ü°è¿¡¼­ ±¸ÇöµÇ´Â °ÍÀÌ °¡Àå ÀûÀýÇÑÁö¸¦ °áÁ¤Çؾ߸¸ ÇÑ´Ù. ±×·¸´Ù¸é ¿ì¼± HTCs ÆÄÀÏÀ» »ý¼ºÇÒ À§Ä¡·Î´Â ¾îµð°¡ °¡Àå Àû´çÇÒÁö¿¡ ´ëÇØ¼­ ³íÀÇÇØº¸ÀÚ. °³°³Àθ¶´Ù ¼±È£ÇÏ´Â ¹æ¹ýÀÌ ÀÖ°ÚÁö¸¸ ÇÊÀÚ´Â ÀÌ ¹®Á¦¸¦ ±»ÀÌ ¾î·Æ°Ô Á¢±ÙÇÏÁö ¾Ê°í °¡Àå °£´ÜÇÑ ¹æ¹ýÀ¸·Î ÇØ°áÇϱâ·Î Çß´Ù. Àá½Ã¸¸ »ý°¢Çغ»´Ù¸é ASP.NET ±â¹Ý ±¸Á¶¿¡´Â ÇöÀç ¿ì¸®µéÀÇ ¸ñÀû¿¡ ÀûÀýÇÏ°Ô È°¿ëÇÒ ¼ö ÀÖ´Â Æú´õ°¡ ÀÌ¹Ì Á¸ÀçÇϰí ÀÖ´Ù´Â Á¡À» ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¹Ù·Î aspnet_client Æú´õ°¡ ±×°ÍÀÌ´Ù. ±×·¯³ª ÀÌ Æú´õ¸¦ ±× ÀÚü·Î »ç¿ëÇϱ⿡´Â Á¶±Ý ¹«¸®°¡ Àִµ¥, ¿Ö³ÄÇϸé aspnet_regiis.exe µîÀÇ ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ¸é ÇØ´ç Æú´õ°¡ µ¤¾î¾º¿öÁö°Å³ª »èÁ¦µÉ ¼ö ÀÖ´Â °¡´É¼ºµµ ÃæºÐÈ÷ Á¸ÀçÇϱ⠶§¹®ÀÌ´Ù. µû¶ó¼­ ¾à°£ÀÇ ÀÀ¿ëÀÌ ÇÊ¿äÇѵ¥ Áö±ÝºÎÅÍ ±× ¹æ¹ýÀ» ¾Ë¾Æ º¸µµ·Ï ÇÏÀÚ. ±×´ÙÁö ³Î¸® ¾Ë·ÁÁöÁö´Â ¾ÊÀº »ç½ÇÀ̳ª machine.config ÆÄÀÏÀÇ 355 ¶óÀÎ ºÎ±ÙÀ» »ìÆìº¸¸é ´ÙÀ½°ú °°Àº ³ëµå¸¦ ã¾Æº¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ±× À¯¸íÇÑ processModel ³ëµåÀÇ ¹Ù·Î ´ÙÀ½¿¡ ³ªÅ¸³ª´Â ³ëµåÀ̹ǷΠã´Âµ¥ º°´Ù¸¥ ¾î·Á¿òÀº ¾øÀ» °ÍÀÌ´Ù.

    ...
    
    <webControls clientScriptsLocation="/aspnet_client/{0}/{1}/"/>
    
    ...
±× ³»¿ëÀ» ÇÑ ¹ø »ìÆìº¸±â¸¸ ÇÏ¸é ¾Æ¹«¸® ´«Ä¡°¡ ¾ø´Â »ç¶÷ÀÌ¶óµµ ¹º°¡ ´À²¸Áö´Â ¹Ù°¡ ÀÖÀ» °ÍÀÌ´Ù. ÀÌ¹Ì ¿©·¯ºÐµéµµ ´ëºÎºÐ ¿¹»óÇÏ°í °è½Ã°ÚÁö¸¸ ¹Ù·Î ÀÌ ³ëµå°¡ ASP.NET ¿¡¼­ »ç¿ëÇÏ´Â ÀÚ¹Ù½ºÅ©¸³Æ®ÀÇ »ý¼º¿ë Æú´õ °æ·Î¸¦ ¼³Á¤ÇÏ´Â ³ëµåÀÌ´Ù. ´õ±º´Ù³ª ÀÌ ³ëµå¿¡ Á¸ÀçÇÏ´Â À¯ÀÏÇÑ ¼Ó¼ºÀÎ clientScriptsLocation ÀÇ °ªÀ» »ìÆìº¸¸é °í¸¿°Ôµµ String Ŭ·¡½ºÀÇ Format() ¸Þ¼­µå¸¦ »ç¿ëÇÏ´Â °ÍÀ» ÀüÁ¦·Î ÇÏ´Â¾ç ±¸¼ºµÇ¾î ÀÖ´Â °ÍÀÌ´Ù. µû¶ó¼­ ÀÌ ¼Ó¼º°ªÀ» ÀоîµéÀÎ ´ÙÀ½, °£´ÜÇÑ ¹®ÀÚ¿­ 󸮸¦ °ÅÄ¡±â¸¸ ÇÏ¸é ²Ï³ª ±×·²µíÇϸ鼭 ³ª¸§´ë·Î ÇÕ¸®ÀûÀÎ °æ·Î¸¦ ¾ò¾î³¾ ¼ö ÀÖ´Ù. ±×·¡¼­ ÇÊÀÚ´Â ´ÙÀ½°ú °°Àº À¯Æ¿¸®Æ¼ ¸Þ¼­µå¸¦ °£´ÜÇÏ°Ô ÀÛ¼ºÇÏ¿© Ŭ·¡½º¿¡¼­ ³»ºÎÀûÀ¸·Î »ç¿ëÇϰí ÀÖ´Ù.

    ...
    
    /// <summary>
    /// .NET ¼³Á¤ ÆÄÀϷκÎÅÍ HTCs ÆÄÀÏÀÌ À§Ä¡ÇÒ URL °æ·Î¸¦ °¡Á®¿Â´Ù.
    /// </summary>
    /// <returns>HTCs ÆÄÀÏÀÌ À§Ä¡ÇÒ URL °æ·Î</returns>
    private string ClientScriptsLocation()
    {
        IDictionary objDictionary = (IDictionary) 
            System.Configuration.ConfigurationSettings.GetConfig("system.web/webControls");
        string ClientScriptsLocation = 
            objDictionary["clientScriptsLocation"].ToString().Trim();
        ClientScriptsLocation = String.Format(ClientScriptsLocation, "EgoCube", "HTCs");

        return ClientScriptsLocation;
    }
    
    ...
±×¸®°í ±× °á°ú·Î¼­ »ý¼ºµÇ´Â Æú´õÀÇ ½ÇÁ¦ ±¸Á¶´Â ´ÙÀ½ÀÇ À̹ÌÁö¸¦ ÅëÇØ¼­ ¹Ì¸® »ìÆìº¼ ¼ö ÀÖ´Ù. ÀÌ Æú´õ ±¸Á¶´Â ÇÊÀÚÀÇ °³¹ß PC ¿¡ ÇöÀç »ý¼ºµÇ¾î ÀÖ´Â ½ÇÁ¦ ±¸Á¶´Ù. ASP .NET ÀÇ ÀÚüÀûÀÎ Æú´õµéÀ» ÀüÇô °£¼·ÇÏÁö ¾ÊÀ¸¸é¼­µµ ´ëºÎºÐÀÇ ºÐµéÀÌ ³³µæÇÒ ¼ö ÀÖÀ»¸¸ÇÑ °á°ú¶ó°í »ý°¢ÇÑ´Ù. ¿©·¯ºÐµéµµ °¢ÀÚ ÀÚ½ÅÀÌ ¼Ò¼ÓµÈ ¾÷üÀÇ È¸»ç¸íÀ̳ª ±â°ü¸í µîÀ» Ȱ¿ëÇÏ¿© aspnet_client Æú´õ ÇÏÀ§¿¡ °íÀ¯ÇÑ Æú´õ¸¦ Ãß°¡ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ´Ù¸¸ ÇÑ °¡Áö ÁÖÀÇÇØ¾ß ÇÒ Á¡ÀÌ Àִµ¥ ±×°ÍÀº ¾Õ¿¡¼­µµ ¿©·¯Â÷·Ê ¾ê±âÇß´ø °Íó·³ Æú´õ°¡ »ý¼ºµÇ´Â ½ÃÁ¡ÀÌ ½ÇÁ¦·Î ÄÁÆ®·ÑÀÌ ÃÖÃÊ·Î ·ÎµåµÇ¾î »ç¿ëµÉ ¶§¶ó´Â Á¡ÀÌ´Ù. Áï ¹®Á¦ÀÇ ÇÙ½ÉÀº °³¹ßÀÚ³ª ¼­¹ö °ü¸®ÀÚ¿¡ ÀÇÇØ¼­°¡ ¾Æ´Ï¶ó ÀÏ¹Ý »ç¿ëÀÚÀÇ ÆäÀÌÁö ¿äû¿¡ ÀÇÇØ¼­ Æú´õ »ý¼ºÀÌ ÀÌ·ç¾îÁø´Ù´Â Á¡ÀÌ´Ù. µû¶ó¼­ ASP .NET ÀÇ ±âº» ½ÇÇà °èÁ¤ÀÎ ASPNET °èÁ¤ÀÌ °¡Áö°í ÀÖ´Â Á¦ÇÑµÈ ±ÇÇѸ¸À¸·Î´Â Æú´õÀÇ »ý¼ºÀÌ ºÒ°¡´ÉÇϹǷΠ°á°úÀûÀ¸·Î´Â ±ÇÇÑ °ü·Ã ¿À·ù°¡ ¹ß»ýÇÏ°Ô µÈ´Ù. ÀÌ·¯ÇÑ ¿À·ù¸¦ ÇÇÇÏ·Á¸é IIS 6.0 À» »ç¿ëÇϰí ÀÖ´Â °æ¿ì¿¡´Â °ü·ÃµÈ ÀÀ¿ë ÇÁ·Î±×·¥ Ç®ÀÇ ID ¼³Á¤À» '·ÎÄà ½Ã½ºÅÛ' À¸·Î ¹Ù²ãÁÖ°í, ±× ÀÌÇÏÀÇ IIS ¹öÀüÀ» »ç¿ëÇϰí ÀÖ´Â °æ¿ì¶ó¸é machine.config ÆÄÀÏ¿¡¼­ processModel ³ëµåÀÇ userName ¼Ó¼ºÀÇ °ªÀ» SYSTEM À¸·Î ¹Ù²ãÁÖ¸é µÈ´Ù. ¸¸¾à ÀÀ¿ë ÇÁ·Î±×·¥ Ç®À̶ó´Â °³³ä ÀÚü°¡ Àͼ÷ÇÏÁö ¾Ê´Ù°Å³ª, ÀÀ¿ë ÇÁ·Î±×·¥ Ç® ID ±¸¼º ¹æ¹ýÀ» Àß ¸ð¸¥´Ù¸é ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®¿¡¼­ Á¦°øÇÏ´Â 'IIS 6.0¿¡¼­ ÀÀ¿ë ÇÁ·Î±×·¥ Ç® ±¸¼º (IIS 6.0)' ¹®¼­³ª 'IIS 6.0¿¡¼­ ÀÀ¿ë ÇÁ·Î±×·¥ Ç® ID ±¸¼º (IIS 6.0)' ¹®¼­ µîÀ» ¸ÕÀú Âü°íÇϱ⠹ٶõ´Ù.


aspnet_client Æú´õ ÇÏÀ§¿¡ Ãß°¡µÈ HTCs Æú´õ ±¸Á¶


¹öÀü ¹®Á¦ ¿ª½Ãµµ »ý°¢Çϱ⿡ µû¶ó¼­´Â ¸Å¿ì °£´ÜÇÏ°Ô ÇØ°áÇÒ ¼ö°¡ ÀÖ´Ù. ¹°·Ð ´Ù¸¥ ¿©·¯°¡Áö ÁÁÀº ¹æ¾ÈµéÀÌ Á¸ÀçÇÒ ¼öµµ ÀÖ°ÚÁö¸¸ ÇÊÀÚ°¡ »ý°¢Çس½ ÇØ°á ¹æ¹ýÀÇ ÇÙ½ÉÀº ¹Ù·Î ¸®Ç÷º¼ÇÀÌ´Ù. Á¶±Ý ´õ ±¸Ã¼ÀûÀ¸·Î ¾ê±âÇÏÀÚ¸é HTCs ÆÄÀÏÀÇ ¹öÀü °ü¸®¸¦ À§Çؼ­ ±»ÀÌ º°µµÀÇ Ã¼°è¸¦ ¸¸µé¾î³¾ °ÍÀÌ ¾Æ´Ï¶ó, ¸ÕÀú ¼­¹ö ÄÁÆ®·Ñ ¾î¼Àºí¸®ÀÇ ¹öÀü Á¤º¸¸¦ ¸®Ç÷º¼ÇÀ¸·Î °¡Á®¿Í¼­ HTCs ÆÄÀÏÀÇ ¹öÀüÀ¸·Î ¹Ý¿µ½ÃŰ¸é µÇ´Â °ÍÀÌ´Ù. .NET ¾î¼Àºí¸®ÀÇ ¹öÀü Á¤º¸´Â AssemblyInfo.cs ÆÄÀÏÀÇ AssemblyVersion ¼Ó¼ºÀ» ÅëÇØ¼­ Á¦¾î°¡ °¡´ÉÇϸç, ´ëºÎºÐÀÇ °æ¿ì ´ÙÀ½ÀÇ Äڵ忡¼­ º¼ ¼ö ÀÖ´Â °Í°ú °°Àº ±âº»°ªÀ¸·Î ¼³Á¤µÇ¾îÁ® ÀÖ´Ù.

    ...
    
    [assembly: AssemblyVersion("1.0.*")]
    
    ...
ÀÌ ±âº» ¼³Á¤À» ±×´ë·Î »ç¿ëÇÏ´Â °Íµµ ³ª»ÚÁö´Â ¾Ê°ÚÁö¸¸, ¼­¹ö ÄÁÆ®·ÑÀÇ ¾î¼Àºí¸® ¹öÀü Á¤º¸¸¦ Ȱ¿ëÇÏ¿© ³í¸®ÀûÀ¸·Î HTCs ÆÄÀÏ ¹öÀüÀ» °ü¸®ÇÑ´Ù´Â ÇöÀçÀÇ ³íÀǸ¦ À§Çؼ­´Â ¹öÀü Á¤º¸¸¦ ¸í½ÃÀûÀ¸·Î ¼³Á¤ÇÏ´Â ÆíÀÌ ´õ ¹Ù¶÷Á÷ÇÒ °ÍÀÌ´Ù. µû¶ó¼­ ´ÙÀ½°ú °°ÀÌ ¹öÀü Á¤º¸¸¦ ¸í½ÃÀûÀ¸·Î Á÷Á¢ ¼³Á¤Çغ¸µµ·Ï ÇÏÀÚ. ´ç¿¬ÇÑ ¾ê±â°ÚÁö¸¸ ÀÌÁ¦ ÇØ´ç ¼­¹ö ÄÁÆ®·Ñ ÇÁ·ÎÁ§Æ®¸¦ ÄÄÆÄÀÏÇÏ¸é ¹öÀü Á¤º¸°¡ 1.0.1.0 ÀÎ ¾î¼Àºí¸® DLL ÀÌ »ý¼ºµÈ´Ù.

    ...
    
    [assembly: AssemblyVersion("1.0.1.0")]
    
    ...
´Ù½Ã º»·ÐÀ¸·Î µ¹¾Æ¿Í º¸ÀÚ. ¹æ±Ý ¿ì¸®µéÀº ¼­¹ö ÄÁÆ®·ÑÀÇ ¾î¼Àºí¸® ¹öÀü Á¤º¸¸¦ ¼³Á¤ÇÏ´Â ¹æ¹ý¿¡ °üÇØ¼­ °£´ÜÇÏ°Ô ¾Ë¾Æº¸¾Ò´Ù. ±×·±µ¥ ÀÌ ¹æ¹ý°ú HTCs ÆÄÀÏÀÇ ¹öÀü °ü¸® »çÀÌ¿¡´Â ¼­·Î ¾î¶°ÇÑ °ü°è°¡ Á¸ÀçÇÏ´Â °ÍÀϱî? ±× ´äÀº ¸Å¿ì °£´ÜÇѵ¥, HTCs ÆÄÀÏÀÌ »ý¼ºµÇ´Â ½ÃÁ¡¿¡ ¸®Ç÷º¼ÇÀ» »ç¿ëÇÏ¿© ¼­¹ö ÄÁÆ®·ÑÀÇ ¹öÀü Á¤º¸¸¦ ¾ò°í ±× ¹öÀü Á¤º¸¸¦ ½ÇÁ¦·Î »ý¼ºµÇ´Â HTCs ÆÄÀϸíÀÇ ÀϺηΠ»ç¿ëÇÏ´Â °ÍÀÌ´Ù. ±×¸®°í HTCs ÆÄÀÏÀÇ ³»¿ëÀÌ ´Ù½Ã º¯°æµÇ´Â °æ¿ì¿¡´Â ¼­¹ö ÄÁÆ®·Ñ ¾î¼Àºí¸® ÀÚüÀÇ ¹öÀü Á¤º¸¸¦ º¯°æÇÏ¿© DLL ÆÄÀÏÀ» Àç»ý¼ºÇÑ ´ÙÀ½, À¥ ÆäÀÌÁö °³¹ßÀڵ鿡°Ô ´Ù½Ã DLL ÆÄÀÏÀ» ¹èÆ÷ÇÏ¸é µÈ´Ù. ¸¸¾à ¶Ç´Ù½Ã HTCs ÆÄÀÏÀÇ ³»¿ëÀÌ º¯°æµÈ´Ù¸é À̹ø¿¡µµ ¼­¹ö ÄÁÆ®·Ñ ¾î¼Àºí¸®ÀÇ ¹öÀü Á¤º¸¸¦ ¿ª½Ã ´Ù½Ã º¯°æÇÏ¿© ÄÄÆÄÀÏÇϰí Àç¹èÆ÷ÇÏ¸é µÈ´Ù. ¹°·Ð ·»´õ¸µµÇ´Â ÄÁÆ®·ÑÀÇ HTML ű׿¡µµ ¿ª½Ã ´ÙÀ½°ú °°ÀÌ ÇØ´ç ¹öÀü Á¤º¸°¡ ¹Ý¿µµÇ¾îÇá ÇÏ´Â °ÍÀº ´ç¿¬ÇÑ ÀÏÀÏ °ÍÀÌ´Ù.

    ...
    
    <input defaultValue="0" name="txtOnlyDigit" 
        type="text" id="txtOnlyDigit" class="cs_textbox" 
        style="behavior:url('/aspnet_client/EgoCube/HTCs/HTCs_Numeric_Only_1.0.1.0.htc');" />
    
    ...
±×·¸´Ù¸é À̹ø¿¡´Â ±¸Ã¼ÀûÀ¸·Î °ú¿¬ ¾î¶»°Ô ¼­¹ö ÄÁÆ®·Ñ ¾î¼Àºí¸®·ÎºÎÅÍ ¹öÀü Á¤º¸¸¦ Àоî¿À´ÂÁö ±× ¹æ¹ýÀ» ³íÀÇÇØº¼ Â÷·Ê´Ù. ¾Õ¿¡¼­ °£´ÜÇÏ°Ô ¾ð±ÞÇß´ø °Íó·³ ¸®Ç÷º¼ÇÀ» »ç¿ëÇϸé ÀÌ ¹®Á¦´Â ½±°Ô ÇØ°áÇÒ ¼ö ÀÖ´Ù. ÀÏ´Ü System.Reflection ³×ÀÓ½ºÆäÀ̽º·ÎºÎÅÍ Á¦°øµÇ´Â Assembly Ŭ·¡½ºÀÇ Á¤Àû ¸Þ¼­µåÀÎ GetExecutingAssembly() ¸Þ¼­µå¸¦ »ç¿ëÇÏ¿© ÇöÀç Äڵ尡 ½ÇÇàµÇ°í ÀÖ´Â ¾î¼Àºí¸®¿¡ ´ëÇÑ ÂüÁ¶¸¦ Assembly Ŭ·¡½º ÇüÅ·Π¾ò´Â´Ù. ´ç¿¬ÇÑ ¾ê±â°ÚÁö¸¸ ÀÌ·¸°Ô ¾ò¾î³½ Assembly °³Ã¼´Â ¼­¹ö ÄÁÆ®·Ñ ¾î¼Àºí¸®¸¦ °¡¸®Å°°í ÀÖ°Ô µÇ´Âµ¥, ÀÌ °³Ã¼ÀÇ ¸â¹ö ¸Þ¼­µåÀÎ GetName() ¸Þ¼­µå¸¦ ÅëÇØ¼­ ¾ò¾î³¾ ¼ö ÀÖ´Â AssemblyName Ŭ·¡½º ŸÀÔ °³Ã¼ÀÇ Version ÇÁ·ÎÆÛƼ °ªÀ¸·Î °£´ÜÇÏ°Ô ¾î¼Àºí¸® ¹öÀü Á¤º¸¸¦ °¡Á®¿Ã ¼ö°¡ ÀÖ´Ù. ÀÌ °úÁ¤ÀÌ ±¸ÇöµÈ ½ÇÁ¦ ÄÚµå´Â ´ÙÀ½°ú °°À¸¸ç ¸®¼Ò½º·ÎºÎÅÍ Stream °³Ã¼ Çü½ÄÀ¸·Î ÀоîµéÀÎ HTCs ÆÄÀÏÀÇ ³»¿ëÀ» º»·¡ÀÇ ÆÄÀϸí°ú ¾î¼Àºí¸®ÀÇ ¹öÀü Á¤º¸¸¦ °áÇÕÇÑ »õ·Î¿î ÆÄÀϸíÀ¸·Î ÀúÀåÇÏ´Â Àü¹ÝÀûÀÎ °úÁ¤À» º¸¿©ÁØ´Ù. Äڵ带 Àß »ìÆìº¸¸é Assembly °³Ã¼ÀÇ ¸â¹ö ¸Þ¼­µåÀÎ GetManifestResourceStream() ¸Þ¼­µå¸¦ »ç¿ëÇÏ¿© °£´ÜÇÏ°Ô HTCs ÆÄÀÏÀÇ ³»¿ëÀ» ¾ò¾î³»°í ÀÖ´Ù´Â Á¡ ¶ÇÇÑ ½±°Ô ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù. »ç½Ç ÀÌ ¸®¼Ò½º¶ó´Â °³³äÀº ´ëºÎºÐÀÇ À¥ °³¹ßÀڵ鿡°Ô´Â ±×´ÙÁö Ä£¼÷ÇÏÁö ¾ÊÀº ³¸¼± °³³äÀÌÁö¸¸ À©µµ¿ìÁî ÀÀ¿ë ÇÁ·Î±×·¥ °³¹ßÀڵ鿡°Ô´Â ¸Å¿ì Ä£¼÷ÇÑ °³³äÀ¸·Î¼­ ÀÌ¿Í °°Àº ¹æ½ÄÀ¸·Î ¸®¼Ò½º¸¦ Ȱ¿ëÇÏ´Â ±â¹ýÀÌ ±×´ÙÁö »õ·Î¿î ¹æ¹ýÀÎ °ÍÀº ¾Æ´Ï´Ù. ¿¹¸¦ µé¾î¼­ EXE ÆÄÀÏÀ̳ª DLL ÆÄÀÏÀÇ ³»ºÎ¿¡ Á¸ÀçÇÏ´Â ¾ÆÀÌÄÜ µîÀÇ °æ¿ì¸¦ ¸Ó¸®¼Ó¿¡ ¶°¿Ã·Á º¸¸é ½±°Ô ÀÌÇØ°¡ °¥ °ÍÀÌ´Ù.

    ...
    
    // ¸®¼Ò½º·ÎºÎÅÍ HTCs ÆÄÀÏÀ» Àд´Ù.
    switch (this.HTCs)
    {
        case HTCsType.Numeric:
            HTCsName = "HTCs_Numeric_Only";
            break;
    }
                
    System.Reflection.Assembly objAssembly 
        = System.Reflection.Assembly.GetExecutingAssembly();
    HTCsResourceName = HTCsRootNameSpace + "." + HTCsName + ".htc";
    using (System.IO.Stream objStream 
        = objAssembly.GetManifestResourceStream(HTCsResourceName))
    {
        using (System.IO.StreamReader objSR = new System.IO.StreamReader(objStream))
        {
            HTCsCode = objSR.ReadToEnd();
        }
    }

    // HTCs ÆÄÀÏ Á¸Àç Á¡°Ë ¹× »ý¼º
    HTCsFullPathName = this.Page.Server.MapPath(this.ClientScriptsLocation()) 
                     + "\\" + HTCsName + "_" + objAssembly.GetName().Version + ".htc";
    if (!System.IO.File.Exists(HTCsFullPathName))
    {
        using (System.IO.StreamWriter objSW 
            = new System.IO.StreamWriter(HTCsFullPathName, false))
        {
            objSW.Write(HTCsCode);
        }
    }
    
    ...
ÀÌÁ¦ Áö±Ý±îÁö ³íÀÇÇÑ ³»¿ëµéÀ» ÇϳªÀÇ ¸Þ¼­µå·Î ±¸ÇöÇÑ µÚ, ÀûÀýÇÑ ¼­¹ö ÄÁÆ®·ÑÀÇ ¶óÀÌÇÁ ½ÎÀÌŬ ´Ü°è¿¡¼­ ¸Þ¼­µå¸¦ È£ÃâÇØÁֱ⸸ ÇÏ¸é ¸ðµç Áغñ°úÁ¤ÀÌ ¸¶¹«¸® µÈ´Ù. ÇÊÀÚ´Â WriteHTCsFile() ¶ó´Â À̸§À¸·Î ÇØ´ç ¸Þ¼­µå¸¦ ÀÛ¼ºÇÏ°í ºÎ¸ð Ŭ·¡½ºÀÎ WebControl Ŭ·¡½ºÀÇ OnInit() À̺¥Æ® Çîµé·¯ ¸Þ¼­µå¸¦ ÀçÁ¤ÀÇÇÏ¿© ´ÙÀ½ÀÇ Äڵ忡¼­ º¼ ¼ö ÀÖ´Â ¹Ù¿Í °°ÀÌ WriteHTCsFile() ¸Þ¼­µå¸¦ È£ÃâÇÔÀ¸·Î¼­ ½ÇÁúÀûÀÎ ±¸ÇöÀ» ó¸®Çϰí ÀÖ´Ù. ¹°·Ð ÀÌ¿Í °°ÀÌ ¼­¹ö ÄÁÆ®·ÑÀÌ ·ÎµåµÉ ¶§¸¶´Ù ¸Å¹ø ¹Ýº¹ÇÏ¿© HTCs ÆÄÀÏÀÇ ÃßÃâ ¹× ÀúÀå ÀÛ¾÷À» ½ÇÇàÇÏ´Â °ÍÀº ÇÊ¿ä¾ø´Â ÆÛÆ÷¸Õ½º ºñ¿ëÀ» ¹ß»ý½ÃŰ°Ô µÇ¹Ç·Î HTCs ¼Ó¼ºÀÌ NotSet À¸·Î ¼³Á¤µÈ °æ¿ì¿¡´Â º°´Ù¸¥ ÀÛ¾÷À» ½ÇÇàÇÏÁö ¾Ê´Â µîÀÇ °£´Ü°£´ÜÇÑ ´ëÀÀ ÄÚµåµéÀÌ ½ÇÁ¦ ¸Þ¼­µå¿¡´Â Ãß°¡µÇ¾îÁ® ÀÖ´Ù. ±×·¯³ª »ç½Ç º¸´Ù ¾ö°ÝÇÏ°Ô ¾ê±âÇÑ´Ù¸é ÄÚµåÀÇ È¿À²¼ºÀ̶ó´Â Ãø¸é¿¡¼­ º¼ ¶§ ±× Á¤µµÀÇ ´ëó¸¸À¸·Î´Â ¸¹ÀÌ ºÎÁ·ÇÑ °ÍÀÌ »ç½ÇÀ̰í, º¸´Ù ±Ùº»ÀûÀÎ Á¢±Ù ¹æ¹ýÀÇ °³¼±ÀÌ ÀÌ·ç¾îÁ®¾ß ÇÒ °ÍÀÌ´Ù. ¿¹¸¦ µé¾î¼­ ¼­¹ö ÄÁÆ®·ÑÀÌ µðÀÚÀÎ ºä¿¡ µå·¡±× & µå¶øµÇ´Â ½ÃÁ¡ÀÌ¶ó´ø°¡ ¼­¹ö ÄÁÆ®·ÑÀÇ Æ¯Á¤ ¼Ó¼º°ªÀÌ º¯°æµÇ´Â ½ÃÁ¡¿¡ HTCs ÆÄÀÏÀÇ ÃßÃâ ¹× ÀúÀå ÀÛ¾÷ÀÌ ¹Ì¸® ÀÌ·ç¾îÁö´Â µîÀÇ ¹æ¹ýÀ¸·Î ¸»ÀÌ´Ù. ±×·¯³ª º»¹®Àº ¾îµð±îÁö³ª ASP .NET »ç¿ëÀÚ ÁöÁ¤ ÄÁÆ®·Ñ°ú HTCs ÆÄÀϰ£ÀÇ ¿¬µ¿¿¡ °üÇÑ °£´ÜÇÑ °³³äÀ» ¼³¸íÇÏ´Â °ÍÀÌ ±× º»·¡ÀÇ ¸ñÀûÀ̹ǷΠÀÌ ÁÖÁ¦¿¡ ´ëÇØ¼­´Â ´õÀÌ»ó ¾ð±ÞÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù.

    ...
    
    /// <summary>
    /// WebControl.OnInit ¸Þ¼­µå ÀçÁ¤ÀÇ
    /// </summary>
    /// <param name="e">À̺¥Æ® µ¥ÀÌÅͰ¡ µé¾î ÀÖ´Â EventArgs °³Ã¼</param>
    protected override void OnInit(EventArgs e)
    {
        this.WriteHTCsFile();
        base.OnInit(e);
    }
    
    ...
¸¶Áö¸·À¸·Î »ìÆìº¸°íÀÚ ÇÏ´Â ºÎºÐÀº Áö±Ý±îÁö ³íÀÇÇÑ ³»¿ëµéÀ» ÅëÇØ¼­, ¹Ì¸® ÁöÁ¤ÇÑ °æ·Î¿¡ ½ÇÁ¦·Î »ý¼ºµÈ ¹°¸®ÀûÀÎ HTCs ÆÄÀÏÀ» ¼­¹ö ÄÁÆ®·ÑÀÇ ÃÖÁ¾ °á°ú¹°ÀÎ HTML ű×ÀÇ ·»´õ¸µ °á°ú¿¡ ¹Ý¿µ½ÃŰ´Â ÀÛ¾÷ÀÌ´Ù. ¿©·¯ºÐµéµµ ÀÌÁ¦´Â ÀÍÈ÷ ¾Ë°í ÀÖ´Â ¹Ù¿Í °°ÀÌ HTCs ÆÄÀÏÀº ÄɽºÄÉÀ̵ù ½ºÅ¸ÀÏ½ÃÆ®ÀÇ behavior ¼Ó¼ºÀ» ÅëÇØ¼­ ¼³Á¤µÇ¾î Áø´Ù. µû¶ó¼­ ¿ì¸®µéÀÌ ¿øÇÏ´Â ÀÛ¾÷À» ó¸®Çϱâ À§Çؼ­´Â ¾î¶°ÇÑ ¹æ½ÄÀ¸·ÎµçÁö ¼­¹ö ÄÁÆ®·ÑÀÇ ÄɽºÄÉÀ̵ù ½ºÅ¸ÀÏ½ÃÆ® ¼³Á¤ °úÁ¤Áß¿¡ HTCs ¸¦ ¼³Á¤Çϱâ À§ÇÑ ´Ü°è°¡ Ãß°¡µÇ¾î¾ß¸¸ ÇÑ´Ù´Â °á·ÐÀÌ ÀÚ¿¬½º·´°Ô À̲ø¾î Áø´Ù. °Ô´Ù°¡ °æ¿ì¿¡ µû¶ó¼­´Â defaultValue ¿Í °°ÀÌ HTCs ³»ºÎ¿¡¼­ Ãß°¡ÀûÀ¸·Î Á¤ÀÇÇÑ ¼Ó¼ºµéÀ̳ª À̺¥Æ® µîµµ ¼­¹ö ÄÁÆ®·ÑÀÇ HTML ¼Ó¼ºÀÇ ÀϺηΠ·»´õ¸µµÇ¾î¾ß¸¸ ÇϹǷΠÀÌ·¯ÇÑ ºÎºÐµéµµ °°ÀÌ °í·ÁµÇ¾îÁ®¾ß¸¸ ÇÏ´Â °ÍÀÌ´Ù. ¹°·Ð ASP .NET ÀÇ À¥ »ç¿ëÀÚ ÁöÁ¤ ¼­¹ö ÄÁÆ®·Ñ °³¹ßÀ» À§ÇÑ ±â¹Ý ±¸Á¶¿¡¼­´Â ¿ì¸®µéÀÇ ±â´ë¿¡ ¾î±ß³ªÁö ¾Ê°Ô ÀÌ·¯ÇÑ ÀÛ¾÷µéÀ» ó¸®Çϱâ À§ÇÑ ÅºÅºÇÑ ¹æ¹ýµéÀ» Á¦°øÇØÁֹǷΠÀ̸¦ Ãæ½ÇÇÏ°Ô ±¸ÇöÇØÁֱ⸸ ÇÏ¸é ¿øÇÏ´Â °á°ú¸¦ ±×´ÙÁö ¾î·ÆÁö ¾Ê°Ô ¾òÀ» ¼ö ÀÖ´Ù. ±¸Ã¼ÀûÀ¸·Î ¸»Çؼ­ AddAttributesToRender() ¸Þ¼­µå¸¦ ÀçÁ¤ÀÇÇØÁֱ⸸ ÇÏ¸é µÇ´Âµ¥, ÀÌ ¸Þ¼­µå´Â WebControl Ŭ·¡½º·ÎºÎÅÍ »ó¼ÓµÇ¸ç ¼­¹ö ÄÁÆ®·ÑÀÇ HTML ű׿¡ ·»´õ¸µµÇ¾îÁú HTML ¼Ó¼º ¶Ç´Â ÄɽºÄÉÀ̵ù ½ºÅ¸ÀÏ½ÃÆ® ¼Ó¼ºÀ» Ãß°¡ÇÒ ¼ö ÀÖ´Â º¸ÀåµÈ ±âȸ¸¦ Á¦°øÇØÁØ´Ù. ¾Æ·¡ÀÇ Äڵ尡 ¹Ù·Î ±× ½ÇÁ¦ °á°ú¹°ÀÌ´Ù.

    ...
    
    /// <summary>
    /// WebControl.AddAttributesToRender ¸Þ¼­µå ÀçÁ¤ÀÇ
    /// </summary>
    /// <param name="writer">
    /// Ŭ¶óÀÌ¾ðÆ®¿¡¼­ HTML ÄÁÅÙÆ®¸¦ ·»´õ¸µÇϱâ À§ÇÑ
    /// Ãâ·Â ½ºÆ®¸²À» ³ªÅ¸³»´Â System.Web.UI.HtmlTextWriter °³Ã¼
    /// </param>
    protected override void AddAttributesToRender(HtmlTextWriter writer)
    {
        // HTCs ¸ðµå·Î µ¿À۵Ǵ °æ¿ì¿¡¸¸ ¼Ó¼º°ªÀ» Ãß°¡ÇÑ´Ù.
        if (this.HTCs != HTCsType.NotSet)
        {
            if (this.HTCs == HTCsType.Numeric)
            {
                // ½ºÅ¸ÀÏ ¼Ó¼º°ª¿¡ HTC ¼³Á¤
                System.Reflection.Assembly objAssembly 
                    = System.Reflection.Assembly.GetExecutingAssembly();
                if (this.Site == null || !this.Site.DesignMode)
                    writer.AddStyleAttribute("behavior", 
                        "url('" + this.ClientScriptsLocation() 
                        + "HTCs_Numeric_Only_" + objAssembly.GetName().Version 
                        + ".htc')");

                // defaultValue ¼Ó¼º°ª ¼³Á¤
                if (HTCsDefaultValue != null && HTCsDefaultValue.Trim().Length > 0)
                    writer.AddAttribute("defaultValue", this.HTCsDefaultValue.Trim());
            }
        }

        base.AddAttributesToRender(writer);
    }
    
    ...
¸®Ç÷º¼ÇÀ» ÅëÇØ¼­ ¾î¼Àºí¸®ÀÇ ¹öÀü Á¤º¸¸¦ Àаí, ±× ¹öÀü Á¤º¸¸¦ ¹ÙÅÁÀ¸·Î HTCs ÀÇ Àüü ÆÄÀϰæ·Î¸¦ ±¸¼ºÇÑ ´ÙÀ½ HtmlTextWriter °³Ã¼·ÎºÎÅÍ Á¦°øµÇ´Â AddStyleAttribute() ¸Þ¼­µå¸¦ »ç¿ëÇÏ¿© ÄɽºÄÉÀ̵ù ½ºÅ¸ÀÏ½ÃÆ® ¼Ó¼º¿¡ HTCs °ü·Ã ¼³Á¤À» ¹Ý¿µ½Ã۰í ÀÖ´Ù. ±×¸®°í ¿ª½Ã ºñ½ÁÇÑ ¹æ¹ýÀ¸·Î AddAttribute() ¸Þ¼­µå¸¦ »ç¿ëÇØ ·»´õ¸µµÇ¾îÁú ¼­¹ö ÄÁÆ®·ÑÀÇ HTML ű׿¡ HTCs ¿¡ ±¸ÇöµÈ ¼Ó¼ºÀ» Ãß°¡Çϰí ÀÖ´Ù. ±× °á°ú·Î¼­ »ý¼ºµÇ´Â HTML ű״ ´ÙÀ½°ú °°À¸¸ç, »ç½Ç»ó ÀÌ HTML űװ¡ º»¹®ÀÇ ÃÖÁ¾ °á°ú¹°ÀÎ ¼ÀÀÌ´Ù.

    ...
    
    <input defaultValue="0" 
        name="txtOnlyDigit" type="text" id="txtOnlyDigit" class="cs_textbox" 
        style="behavior:url('/aspnet_client/EgoCube/HTCs/HTCs_Numeric_Only_1.0.1.1.htc');" />

    ...
ÀÌ·¸°Ô ÇØ¼­ ÀåÀå 10 °³¿ù µ¿¾ÈÀ» ²ø¾î¿À´ø º»¹®ÀÇ ÀÛ¼ºÀÌ ¸¶¹«¸® µÇ¾ú´Ù. º»¹®ÀÇ ³»¿ë ±× ÀÚüµµ ¿©·¯¸ð·Î ¹ÌÈíÇÑ ºÎºÐµéÀÌ ¸¹°Å´Ï¿Í ³Ê¹«³ªµµ ¿À·£ ±â°£ µ¿¾È ÀÛ¼ºµÈ °ü°è·Î ÃÖ±Ù¿¡ È­Á¦°¡ µÇ°í ÀÖ´Â ´Ù¾çÇÑ ±â¼úÀûÀÎ À̽´µé°ú´Â »ó´çÈ÷ µ¿¶³¾îÁø ÁÖÁ¦°¡ µÇ¾î¹ö¸° °¨µµ ¾øÁö´Â ¾ÊÀ» °ÍÀÌ´Ù. ±×·¯³ª º»¹®¿¡¼­ ³íÀÇÇϰí ÀÖ´Â À̽´µé ¶ÇÇÑ ±× ³ª¸§´ë·Î Àǹ̸¦ °¡Áö°í ÀÖ´Â ±ÛÀ̶ó°í »ý°¢ÇÏ¿© µÚ´Ê°Ô³ª¸¶ ±ÞÇÏ°Ô ±ÛÀ» ¸¶¹«¸®ÇÏ°Ô µÇ¾ú´Ù. ¸¶Áö¸·À¸·Î ±× 10 °³¿ùÀ̶ó´Â ½Ã°£ÀÌ ÇÊÀÚ¿Í ¿©·¯ºÐµéÀ» ºñ·ÔÇÑ ASP .NET °³¹ßÀڵ鿡°Ô °¡Á®¿Â º¯È­¿¡ ´ëÇØ¼­ ÇÑ ¹ø »ý°¢ÇØ º¸°í¼­ º»¹®À» Á¤¸®ÇϰíÀÚ ÇÑ´Ù. ¸ÕÀú °³ÀÎÀûÀ¸·Î ÇÊÀÚ°¡ °¡Àå ¸ÕÀú ¼Õ²Å°í ½ÍÀº º¯È­·Î´Â ÆÄÀÌ¾îÆø½ºÀÇ ¾àÁøÀ» µé ¼ö ÀÖ´Ù. ¹°·Ð ÆÄÀÌ¾îÆø½º´Â µîÀå ±× ÀÚüºÎÅͰ¡ ¸Å¿ì È­·ÁÇϱ⵵ ÇßÁö¸¸, ÃÖ±Ù ¸î ´Þ°£ ÀÌ·ç¾îÁø ÆÄÀÌ¾îÆø½ºÀÇ Á¸Àç°¨ È®»êÀº À¥ °³¹ßÀÚµéÀÌ °áÄÚ ¹«½ÃÇÒ ¼ö ¾ø´Â ¼öÁØÀ¸·Î±îÁö Ä¡´Þ¾Ò´Ù¶ó´Â °³ÀÎÀûÀÎ °á·ÐÀÌ´Ù. ´ÜÀûÀ¸·Î ÃÖ±ÙÀÇ MSDN ¸Å°ÅÁøÀÇ ±â»ç¿¡¼­´Â ±â»ç¿¡¼­ ÀÛ¼ºÇÑ ÀÚ¹Ù½ºÅ©¸³Æ® Äڵ尡 ÆÄÀÌ¾îÆø½º¿¡¼­ Á¤»óÀûÀ¸·Î µ¿ÀÛÇÔÀ» º¸¿©ÁÖ±â À§ÇÑ À̹ÌÁö ĸÃç±îÁö ³ª¿Ã Á¤µµ´Ï ¸»ÀÌ´Ù. ¾ÆÁ÷±îÁö´Â ÀÌ¿Í °°Àº ÀÏ·ÃÀÇ º¯È­µéÀÌ ±â¾÷üÀÇ ¼Ö·ç¼Ç ±¸ÃàÀ» ÁÖ¿ä ¾÷¹«·Î »ï°í ÀÖ´Â ÇÊÀÚ¿Í °°Àº °³¹ßÀڵ鿡°Ô±îÁö´Â º°´Ù¸¥ ¿µÇâ·ÂÀ» ¹ÌÄ¡°í ÀÖÁö ¸øÇϰí ÀÖ´Ù¶ó°í »ý°¢Çϰí´Â ÀÖÁö¸¸, HTCs °³¹ßÀ̳ª ASP .NET À¥ »ç¿ëÀÚ ÁöÁ¤ ÄÁÆ®·Ñ °³¹ß°ú °°ÀÌ Àüü °³¹ß ¹üÀ§»ó¿¡¼­ ¾î¶°ÇÑ °øÅë ºÐ¸ð¸¦ ´ã´çÇϰí ÀÖ´Â °³¹ßÀÚµéÀ̶ó¸é Áö±Ý±îÁöº¸´Ù »ó´ëÀûÀ¸·Î °í¹ÎÇØ¾ß¸¸ µÉ À̽´µéÀÌ Á¶±Ý ´õ ´Ã¾î³µÀ¸¸ç, °Ô´Ù°¡ Á¶±Ý ´õ ¹Î°¨ÇØÁö±â±îÁö Çß´Ù´Â Á¡À» ÀÎÁ¤ÇÒ ¼ö ¹Û¿¡ ¾øÀ» °ÍÀÌ´Ù. µû¶ó¼­ º»¹®ÀÇ ÁÖÁ¦À̱⵵ ÇÏ¸ç º»¹®¿¡¼­ °è¼ÓÇØ¼­ °Å·ÐµÇ¾îÁö°í ÀÖ´Â HTCs ¶ó´Â ´Ü¾î¸¦ À¥ ºê¶ó¿ìÀú ȣȯ ÀÚ¹Ù½ºÅ©¸³Æ®¶ó´Â ´Ü¾î·Î ´ë½ÅÇØ¾ß¸¸ ÇÏ´Â °æ¿ìµµ ÃæºÐÈ÷ ÀÖÀ» ¼ö ÀÖÀ» °ÍÀÌ´Ù.

±×·±µ¥ °³ÀÎÀûÀ¸·Î »ó´çÈ÷ Àç¹ÌÀÖ´Ù°í ´À²¸Áö´Â Á¡Àº ÇÊÀÚ°¡ µÎ ¹øÂ° Ä¿´Ù¶õ º¯È­·Î Áö¸ñÇϰíÀÚ ÇÏ´Â ¸¶ÀÌÅ©·Î¼ÒÇÁÆ® ºñÁÖ¾ó ½ºÆ©µð¿À 2005 ÀÇ Á¤½ÄÃâ½Ã¿Í ±×¿¡ µû¶ó Á¡ÁøÀûÀ¸·Î Áõ°¡µÇ´Â ASP .NET 2.0 ÀÇ µµÀÔÃß¼¼¾ß¸»·Î ASP .NET °³¹ßÀÚµéÀÌ ¾Õ¿¡¼­ °Å·ÐµÇ¾ú´ø º¯È­¿¡ ´ëóÇϱâ À§Çؼ­ ½ÃµµÇÒ ¼ö ÀÖ´Â °¡Àå Àû±ØÀûÀÎ ¹æ¹ýÀÇ ½ÃÀÛÁ¡ÀÌ ¾Æ´Ñ°¡ ÇÏ´Â Á¡ÀÌ´Ù. ¹°·Ð ÀÌ¿Í °°Àº ÁÖÀåÀº Áö±ØÈ÷ °³ÀÎÀûÀÎ ÇÊÀÚÀÇ »ç°ßÀÏ »ÓÀÌÁö¸¸, ³ª¸§´ë·Î ÇÊÀÚ°¡ ÀÌ·¸°Ô »ý°¢À» Çϰí ÀÖ´Â ÀÌÀ¯¿¡´Â ´ÙÀ½°ú °°Àº µÎ °¡Áö ±â¼úÀûÀÎ ±Ù°Å°¡ Á¸ÀçÇÑ´Ù. ù ¹øÂ° ±Ù°Å´Â ASP .NET 2.0 ¿¡¼­ Á¦°øµÇ´Â ¸®¼Ò½º ±â¹ÝÀÇ ½ºÅ©¸³Æ® ÄÚµå °ü¸®´Ù. º»¹®ÀÇ ÈĹݺο¡¼­ ³íÀÇÇϰí ÀÖ´Â ÁÖÁ¦´Â ÇÊÀÚ°¡ ³ª¸§´ë·Î ±¸ÇöÇÑ ¸®¼Ò½º ±â¹ÝÀÇ ½ºÅ©¸³Æ® (Æ÷°ýÀûÀÎ °üÁ¡¿¡¼­ HTCs ¿ª½Ãµµ ½ºÅ©¸³Æ®À̹ǷÎ) °ü¸® ±â¹ý¿¡ °üÇÑ °ÍÀε¥, ASP .NET 2.0 ¿¡¼­´Â ÇÁ·¹ÀÓ¿öÅ© Â÷¿ø¿¡¼­ ¸®¼Ò½º¿¡ ±â¹ÝÇÑ ½ºÅ©¸³Æ® ÄÚµå °ü¸® ±â¹ýÀ» º¸´Ù dzºÎÇÏ°í Æí¸®ÇÑ ¹æ¹ýÀ¸·Î Á¦°øÇØÁÖ°í ÀÖ´Ù. µû¶ó¼­ º»¹®¿¡¼­ »ìÆìºÃ´ø ¹Ù¿Í °°ÀÌ ¸®¼Ò½º·ÎºÎÅÍ ½ºÅ©¸³Æ® Äڵ带 °¡Á®¿À±â À§ÇØ ±»ÀÌ ÀÌ·±Àú·± ¹æ¹ýÀ» µ¿¿øÇÏ¿© ³­ÇØÇÑ Äڵ带 ÀÏÀÏÀÌ ±¸ÇöÇÒ Çʿ䰡 ¾ø¾îÁø °ÍÀÌ´Ù. µÎ ¹øÂ° ±Ù°Å´Â ÄÚµå¸í ATLAS ·Î Àß ¾Ë·ÁÁø ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®ÀÇ AJAX ÇÁ·¹ÀÓ¿öÅ©°¡ ¹Ù·Î ±×°ÍÀÌ´Ù. ´ëºÎºÐ ¸¹Àº ºÐµéÀÌ AJAX ¸¦ ±â¼úÀûÀÎ °üÁ¡¿¡¼­ »ìÆìº¼ ¶§ ÇÑ °¡Áö °£°úÇÏ°í ³Ñ¾î°¡´Â ºÎºÐÀÌ ÀÖ´Ù. ºÐ¸íÈ÷ ÀÌ ±â¼úÀ» µÞ¹ÞÄ§ÇØÁÖ´Â ÇÙ½É ¿ä¼ÒÁß ÇÑ °¡Áö°¡ ÆäÀÌÁö¸¦ °»½ÅÇÏÁö ¾Ê°í¼­µµ ¼­¹ö´Ü°ú µ¿±âÀû, ¶Ç´Â ºñµ¿±âÀûÀ¸·Î µ¥ÀÌÅ͸¦ ÁÖ°í ¹Þ°Ô ÇØÁÖ´Â ¸ÅÄ¿´ÏÁòÀ̶ó´Â »ç½ÇÀ» ºÎÀÎÇÒ ¼ö ÀÖ´Â »ç¶÷Àº ¾Æ¹«µµ ¾øÀ» °ÍÀÌ´Ù. ±×·¯³ª ÀÌ·¯ÇÑ ¼­¹ö´Ü°úÀÇ Åë½ÅÀ̶ó´Â Ãø¸éÀÌ ³Ê¹« °­Á¶µÈ ³ª¸ÓÁö ÆäÀÌÁö ·»´õ¸µÀ» À§Çؼ­ ÇÊ¿äÇÑ DOM °ú ½ºÅ©¸³Æ®´Ü ±¸Çö¿¡ ´ëÇÑ Á߿伺ÀÌ ¹«½ÃµÇ¾îÁö´Â °æÇâÀÌ ¸Å¿ì °­ÇÏ´Ù´Â Á¡ÀÌ´Ù. ÀÌ ºÎºÐÀÌ ¸¸Á·½º·´°Ô Áö¿øµÇÁö ¾Ê´Â´Ù¸é AJAX ´Â ¶Ç ´Ù¸¥ ÇüÅÂÀÇ ¾÷¹« Áõ°¡¸¸À» °¡Á®¿Ã »ÓÀ̶ó´Â °ÍÀÌ ÇÊÀÚÀÇ »ý°¢ÀÌ´Ù. ±×·¯³ª ´ÙÇེ·´°Ôµµ ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®¿¡¼­ ±¸ÇöÇÑ AJAX ¶óÀ̺귯¸®ÀÎ ATLAS ¿¡¼­´Â °´Ã¼ÁöÇâÀûÀÎ ¹æ¹ýÀ¸·Î ´ëºÎºÐÀÇ À¥ ºê¶ó¿ìÀú»ó¿¡¼­ µ¿ÀÏÇÑ ¹æ¹ýÀ¸·Î Ŭ¶óÀÌ¾ðÆ®´Ü Ã³¸®¸¦ ±¸ÇöÇÒ ¼ö ÀÖµµ·Ï Áö¿øÇØÁִ Ŭ¶óÀÌ¾ðÆ® ÀÚ¹Ù½ºÅ©¸³Æ® ¶óÀ̺귯¸®¸¦ Áö¿øÇØÁֹǷΠÀ¥ °³¹ßÀÚ°¡ Å©·Î½º ºê¶ó¿ì¡À» À§ÇØ Ä¿´Ù¶õ ³ë·ÂÀ» ±â¿ïÀÌÁö ¾Ê´õ¶óµµ °íǰÁúÀÇ °á°ú¹°À» ¾òÀ» ¼ö ÀÖ°Ô ÇØÁØ´Ù. ¾ÆÁ÷±îÁö ATLAS °¡ Á¤½ÄÀ¸·Î ¹èÆ÷µÇÁö´Â ¾ÊÀº »óȲÀ̰í, ÇÊÀÚÀÇ ATLAS ¿¡ ´ëÇÑ Áö½Äµµ ¸Å¿ì ºÎÁ·ÇÑ ÆíÀ̱â´Â ÇÏÁö¸¸ °¨È÷ ´Ü¾ðÄÁµ¥ ÇູÇÑ ±â´ë¸¦ ÇØµµ ÁÁÀ» °ÍÀ̶ó°í ¹Ï´Â´Ù. áä

 

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