lecture Home > ASP.NET > Web Matrix¿¡¼­ ³ª¸¸ÀÇ ÅÛÇø´ ¸¸µé±â

Web Matrix·Î ±¸ÇöÇÏ´Â Code-Behind (II)

   °­Á ÃÖÃÊ ÀÛ¼ºÀÏ : 2004³â 08¿ù 25ÀÏ
   °­Á ÃÖÁ¾ ¼öÁ¤ÀÏ : 2004³â 09¿ù 08ÀÏ

   °­Á ÀÐÀ½ ¼ö : ȸ

   ÀÛ¼ºÀÚ : ¼Õ °æ´ö
   ÆíÁýÀÚ : Taeyo(±è Å¿µ)

   °­Á Á¦¸ñ : Web Matrix·Î ±¸ÇöÇÏ´Â Code-Behind (II)

°­Á ½ÃÀÛ >

Á˼ÛÇÕ´Ï´Ù. ÇÑÁÖ°¡ ÇÑ´ÞÀÌ µÇ¾î ¹ö·È³×¿ä. À̹ø °­Á¿¡¼­´Â ¿Ïº®ÇÑ ÄÚµå ºñÇÏÀÎµå ±¸Çö¿¡ ´ëÇØ¼­ ´Ù·çµµ·Ï ÇϰڽÀ´Ï´Ù.

À̹ø °­Á´ Àü¿¡ ¸»¾¸µå¸°¹Ù¿Í °°ÀÌ À¥¸ÅÆ®¸¯½º¸¦ ÀÌ¿ëÇÑ Code-Behind¿¡ ´ëÇØ¼­ Á»´õ ¾Ë¾Æº¸µµ·ÏÇϰڽÀ´Ï´Ù. ´õºÒ¾î À̹ø °­Á¿¡¼­´Â ¿Ïº®ÇÑ ÄÚµå-ºñÇÏÀε带 ±¸ÇöÇÕ´Ï´Ù.

Àü °­Á¿¡¼­´Â À¥¸ÅÆ®¸¯½º¸¦ ÀÌ¿ëÇÏ¿© ÄÚµå-ºñÇÏÀε忡 ´ëÇØ¼­ °£´ÜÈ÷ »ìÆìº¸¾ÒÀ¸¸ç À̸¦ À§ÇÑ ÄÚµå-ºñÇÏÀε带 À§ÇÑ ÅÛÇø´ »ç¿ë¿¡ °üÇØ¼­ °£´ÜÈ÷ »ìÆìº¸¾Ò½À´Ï´Ù. ÅÛÇø´ Ȱ¿ë¿¡ °üÇØ¼­´Â ÀÌ¹Ì ¾Ë°í °è½Ã¸®¶ó »ý°¢Çϰí Äڵ带 Áß½ÉÀ¸·Î »ìÆìº¸µµ·Ï ÇϰڽÀ´Ï´Ù.

¸ÕÀú CodeBehind2.aspx ÆÄÀÏÀ» »ìÆìº¸µµ·Ï ÇϰڽÀ´Ï´Ù.

<%@ [Page Language="C#"] [CodeBehind="CodeBehind2.aspx.cs"] Inherits="Unicycle.CodeBehind2" [AutoEventWireup="false"] %>

<html>
<head>
  <title></title>
  <link href="/css/unicycle.css" type="text/css" rel="stylesheet" />
</head>
<body>
  <form id="frmCodeHibehind2" runat="server">
    <asp:Label id="lblPageLoad" runat="server"></asp:Label>
    <br>
    <asp:Label id="lblPagePreRender" runat="server"></asp:Label>
    <br>
    <br>
    <asp:Button id="btnButton" Text="click me" runat="server"></asp:Button>
  </form>
</body>
</html>

º¸½Ã´Â ¹Ù¿Í °°ÀÌ CodeBehind=""¿Í Inherits="" ±×¸®°í AutoEventWireup=""¸¦ ÁöÁ¤ÇÏ¿´½À´Ï´Ù. CodeBeind¿Í Language ±×¸®°í AutoEventWireup ¼Ó¼ºÀº ÇÊ¿ä ¾øÁö¸¸ Visual Studio.NET¿¡¼­ °³¹ß½Ã¿¡ ÀÚÁÖ º¸ÀÌ´Â °ÍµéÀ̶ó Àû¾úÀ¸¸ç ½ÇÁ¦ ¼­ºñ½º¿¡¼­´Â »ç¿ëµÇÁö ¾Ê¾Æµµ µÇ±â¿¡ []·Î ¹­¾î¼­ Ç¥½ÃÇÏ¿´½À´Ï´Ù.

AutoEventWireupÀº À̺¥Æ®¿Í ÇØ´ç À̺¥Æ® Çڵ鷯¸¦ ÀÚµ¿À¸·Î ¸ÅĪ ½Ãų °ÍÀÎÁö¿¡ ´ëÇÑ ¼Ó¼ºÀε¥ Ç¥Çö·ÂÀÇ ÇѰè·Î MSDNÀÇ ³»¿ëÀ» ¹ßÃéÇß½À´Ï´Ù. ^^;;

MSDN :
Page Áö½Ã¹®ÀÇ AutoEventWireup Ư¼ºÀÌ true·Î ¼³Á¤µÇ°Å³ª ±âº»°ªÀÌ trueÀ̹ǷΠ»ý·«µÈ °æ¿ì ÆäÀÌÁö ÇÁ·¹ÀÓ¿öÅ©¿¡¼­ ÆäÀÌÁö À̺¥Æ® ƯÈ÷, Page_Init ¹× Page_Load ¸Þ¼­µå¸¦ ÀÚµ¿À¸·Î È£ÃâÇÕ´Ï´Ù. ÀÌ °æ¿ì ¸í½ÃÀû Handles ÀýÀ̳ª ´ë¸®ÀÚ´Â ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù.
AutoEventWireup Ư¼ºÀÇ ´ÜÁ¡Àº ÆäÀÌÁö À̺¥Æ® 󸮱⿡ ¹Ì¸® ¿¹ÃøÇÒ ¼ö ÀÖ´Â À̸§ÀÌ ÇÊ¿äÇÏ´Ù´Â °ÍÀÔ´Ï´Ù. ±× °á°ú À̺¥Æ® 󸮱âÀÇ À̸§À» ÁöÁ¤ÇÏ´Â µ¥ ÀÖ¾î À¯¿¬¼ºÀÌ Á¦Çѵ˴ϴÙ. µû¶ó¼­ Visual Studio¿¡¼­ AutoEventWireup Ư¼ºÀº ±âº»ÀûÀ¸·Î false·Î ¼³Á¤µÇ°í µðÀÚÀ̳ʿ¡¼­ ÆäÀÌÁö À̺¥Æ®¸¦ ¸Þ¼­µå¿¡ ¹ÙÀεùÇÏ´Â ¸í½ÃÀû Äڵ带 »ý¼ºÇÕ´Ï´Ù.
AutoEventWireupÀ» true·Î ¼³Á¤Çϸé Visual Studio¿¡¼­ À̺¥Æ®¸¦ ¹ÙÀεùÇÏ´Â Äڵ带 »ý¼ºÇÏ°í ÆäÀÌÁö ÇÁ·¹ÀÓ¿öÅ©¿¡¼­ ±× À̸§À» ±âÁØÀ¸·Î ÀÚµ¿À¸·Î À̺¥Æ®¸¦ È£ÃâÇÕ´Ï´Ù. ±× °á°ú ÆäÀÌÁö¸¦ ½ÇÇàÇÏ¸é °°Àº À̺¥Æ® Äڵ尡 µÎ ¹ø È£ÃâµÉ ¼ö ÀÖ½À´Ï´Ù. µû¶ó¼­ Visual Studio¿¡¼­ ÀÛ¾÷ÇÒ ¶§´Â Ç×»ó AutoEventWireupÀ» false·Î ¼³Á¤ÇØ¾ß ÇÕ´Ï´Ù.

À̹ø¿¡´Â ½ÇÁ¦ Äڵ尡 µé¾îÀÖ´Â C# Ŭ·¡½º ÆÄÀÏÀÎ CodeBehind2.aspx.csÀÇ ¼Ò½º¸¦ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.

namespace Unicycle
{
  using System;

  using System.Web;
  using System.Web.UI;

  public class CodeBehind2 : Page
  {
    protected System.Web.UI.WebControls.Label lblPageLoad;
    protected System.Web.UI.WebControls.Label lblPagePreRender;

    protected System.Web.UI.WebControls.Button btnButton;
    
    public CodeBehind2()
    {
    }

    override protected void OnInit(System.EventArgs e)
    {
      InitControls();
      base.OnInit(e);

      Response.Write("OnInit<br>");
    }

    private void InitControls()
    {
      //control initialization

      // À̺¥Æ® Çڵ鷯 µî·Ï
      this.Load += new System.EventHandler(this.Page_Load);
      this.PreRender += new System.EventHandler(this.Page_PreRender);
      this.btnButton.Click += new System.EventHandler(this.btnButton_Click);
    }

    private void Page_Load(object sender, System.EventArgs e)
    {
      lblPageLoad.Text = "Page_Load Event!!<br>";
    }

    private void Page_PreRender(object sender, System.EventArgs e)
    {
      lblPagePreRender.Text = "Page_PreRender Event!!<br>";
    }

    private void btnButton_Click(object sender, System.EventArgs e)
    {
      Response.Write("Button Clicked!!<br>p");
    }
  }
}

³ì»ö ºÎºÐÁß OnInit ¸Þ¼Òµå´Â À̺¥Æ® Çڵ鷯¸¦ µî·ÏÇÏ´Â ºÎºÐÀ¸·Î MSDNÀ» º¸¸é "¼­¹ö ÄÁÆ®·Ñ ÁÖ±âÀÇ Ã³À½ ´Ü°è·Î ¼­¹ö ÄÁÆ®·ÑÀ» ÃʱâÈ­ÇÒ ¶§ ¹ß»ýÇÕ´Ï´Ù."¶ó°í ³ª¿ÍÀÖÀ¸¸ç ÀÌ À̺¥Æ®¸¦ ¹ß»ý½ÃŰ´Â ¸Þ¼Òµå°¡ OnInit ¸Þ¼ÒµåÀÔ´Ï´Ù. Áï À̺κп¡¼­ ÄÜÆ®·Ñ¿¡ ´ëÇÑ ÃʱâÈ­¸¦ ÇØÁÖ¸é µÈ´Ù´Â °á·ÐÀÌ ³ª¿É´Ï´Ù. ^^;; ±×¸®°í Page Ŭ·¡½º¸¦ »ó¼ÓÇϱ⶧¹®¿¡ override¸¦ ÇØ ÁÖ¾ú±¸¿ä..

CodeBehind2.aspx.cs ÆÄÀÏÀ» ¶óÀ̺귯¸®·Î ¸¸µé±â À§Çؼ­ ÄÄÆÄÀÏÀ» ÇØ¾ß ÇÕ´Ï´Ù. ±×¸®°í Àú´Â CodeBehind2.dllÀÇ À̸§À¸·Î ÄÄÆÄÀ»À» ÇÏ°í ¾ÖÇø®ÄÉÀ̼ÇÀÇ bin Æú´õ·Î ³Ö¾î ÁÖµµ·Ï ÇϰڽÀ´Ï´Ù. ´Ùµé ¾Æ½Ã°ÚÁö¸¸ ASP.NETÀº »ç¿ëµÇ´Â ¶óÀ̺귯¸®¸¦ °Ë»öÇÒ ¶§ ÇØ´ç À¥ ¾ÖÇø®ÄÉÀÌ¼Ç ·çÆ®¿¡ ÀÖ´Â bin Æú´õ¸¦ °Ë»öÇϱ⠶§¹®ÀÔ´Ï´Ù.

À̷μ­ ¿Ïº®ÇÑ ÄÚµå-ºñÇÏÀÎµå ±¸ÇöÀ» À§ÇÑ Áغñ¸¦ ÇÏ¿´½À´Ï´Ù. ±×·³ ºÓÀº»öÀº ¹«¾ùÀ̳ı¸¿ä? ÀÌ ºÎºÐÀº ÀÌ¹Ì Á¤ÇØÁø À̺¥Æ® Çڵ鷯¸¦ µî·ÏÇØ ÁÖ´Â ºÎºÐÀÔ´Ï´Ù. ´Ù½Ã ¸»ÇÏÀÚ¸é ¹öưÀÌ Å¬¸¯µÇ¾úÀ» ¶§ ¼öÇàµÇ´Â ¸Þ¼Òµå¸¦ ÁöÁ¤ÇØ ÁÖ´Â ºÎºÐÀÔ´Ï´Ù. delegate¸¦ »ç¿ëÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. ´õºÒ¾î Visual Studio .NET¿¡¼­´Â InitializeComponent()¶ó´Â ¸Þ¼Òµå¸¦ »ç¿ëÇϰí ÀÖÀ¸¸ç

/// <summary>
/// µðÀÚÀÌ³Ê Áö¿ø¿¡ ÇÊ¿äÇÑ ¸Þ¼­µåÀÔ´Ï´Ù.
/// ÀÌ ¸Þ¼­µåÀÇ ³»¿ëÀ» ÄÚµå ÆíÁý±â·Î ¼öÁ¤ÇÏÁö ¸¶½Ê½Ã¿À.
/// </summary>

¶ó´Â ¹®±¸·Î °íÄ¡¸é Å«ÀÏÀÌ ³ª´Â°Í ó·³ °æ°í¸¦ ÁÖ°í ÀÖ½À´Ï´Ù(¿¾³¯ º£Å¸ ¹öÀü¿¡¼­´Â °¡²û ÄÁÆ®·ÑÀÇ À̺¥Æ® Çڵ鷯°¡ »èÁ¦µÇÁö ¾Ê´Â Çö»óÀÌ ÀÖ¾î Á÷Á¢ »èÁ¦ÇØ Áֱ⵵ ÇÏ¿´½À´Ï´Ù.). À§ÀÇ Äڵ忡¼­´Â Page_Load(), Page_PreRender(), btnButton_Click() ¸Þ¼Òµå¸¦ À̺¥Æ® Çڵ鷯·Î µî·ÏÇØ ÁÖ¾ú½À´Ï´Ù.

ÀÌÁ¦ ÄÄÆÄÀÏÀ» ÇÒ Â÷·Ê±º¿ä. Àú´Â compile.bat ÆÄÀÏÀ» ¸¸µé¾î ÄÄÆÄÀÏÀ» Çϵµ·Ï ÇϰڽÀ´Ï´Ù. pause¸¦ »ç¿ëÇÏ´Â ÀÌÀ¯´Â ¹èÄ¡ ÆÄÀÏÀ» ´õºíŬ¸¯ÇÏ¿© ½ÇÇà½Ã۸é ÄÄÆÄÀÏ °á°ú¸¦ ´«À¸·Î È®ÀÎÇϱ⵵ Àü¿¡ commandâÀÌ ¾ø¾îÁö±â ¶§¹®¿¡ È®ÀÎÀ» À§Çؼ­ Ãß°¡ÇÏ¿´½À´Ï´Ù.

@echo CodeBehind2.cs¸¦ ÄÄÆÄÀÏÇÕ´Ï´Ù.
csc /t:library /r:System.dll,System.Web.dll /out:../bin/CodeBehind2.dll CodeBehind2.aspx.cs

pause

ÀÌÁ¦ ¸ðµç Áغñ°¡ ¸¶ÃÄÁ³À¸´Ï ½ÇÇàÀ» ÇØ º¸°Ú½À´Ï´Ù.

1¹øÀº À§ÀÇ Äڵ带 ±×´ë·Î ÄÄÆÄÀÏÇÏ¿© ½ÇÇà½ÃŲ °ÍÀ̰í 2¹øÀº PreRender¿¡ ÁÖ¼®Ã³¸®¸¦ ÇØ ³õ°í ´Ù½Ã ÄÄÆÄÀÏÇÑ ÈÄ ½ÇÇà½ÃŲ È­¸éÀÔ´Ï´Ù.

1. PreRender À̺¥Æ® Çڵ鷯 µî·Ï 2. PreRender À̺¥Æ® Çڵ鷯 ¹Ìµî·Ï

À¥¸ÅÆ®¸¯½º¸¦ ÀÌ¿ëÇÑ ÄÚµå-ºñÇÏÀÎµå ±¸ÇöÀ̾ú½À´Ï´Ù. ¼ÕÀ¸·Î Çϱ⿡´Â ³Ê¹« ¸¹Àº ÀÛ¾÷ÀÌ ¾Æ´Ñ°¡ »ý°¢µË´Ï´Ù. ¿ª½Ã ÃÖ°íÀÇ ¹æ¹ýÀº Visual Studio .NETÀÎ °Í °°½À´Ï´Ù. ^^;; ´ÙÀ½ °­ÁºÎÅÍ´Â Data PagesÀÇ ÅÛÇø´À» ´Ù·çµµ·Ï ÇϰڽÀ´Ï´Ù.

´ÙÀ½ °­Á¿¡¼­ ºË°Ú½À´Ï´Ù. °¨»çÇÕ´Ï´Ù.

 

Back