C#

[C#] ASP.NET MasterPage ๋ž€? ๊ณตํ†ต ๋ ˆ์ด์•„์›ƒ ์ •์˜ํ•˜๊ธฐ

hyonie 2025. 3. 28. 11:07

 

๐Ÿ“‚ ๋ชฉ์ฐจ

     


    1. MasterPage๋ž€?

    ASP.NET Web Form์—์„œ๋Š” ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€์—์„œ ๋ฐ˜๋ณต๋˜๋Š” UI ์š”์†Œ๋“ค (์˜ˆ๋ฅผ ๋“ค๋ฉด ํ—ค๋”, ๋ฉ”๋‰ด, ํ‘ธํ„ฐ, ์Šคํฌ๋ฆฝํŠธ ๋“ฑ..)์„ ํ•œ ๊ณณ์—์„œ ํ†ตํ•ฉ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ธ MasterPage๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

    ๋งˆ์Šคํ„ฐํŽ˜์ด์ง€๋Š” ์›น์‚ฌ์ดํŠธ ์ „์ฒด์˜ ๊ณตํ†ต ๋ ˆ์ด์•„์›ƒ(ํ‹€) ์„ ์ •์˜ํ•˜๋Š” HTML๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.
    ๊ฐ ํŽ˜์ด์ง€๋Š” ํ•ด๋‹น ํ‹€์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž์‹ ์˜ ์ฝ˜ํ…์ธ ๋งŒ ์ฑ„์›Œ ๋„ฃ๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

     

    ๐Ÿ’ฌ ์‰ฝ๊ฒŒ ๋น„์œ ํ•˜์ž๋ฉด?

    • MasterPage = ์›น์‚ฌ์ดํŠธ์˜ ์„ค๊ณ„๋„
    • ContentPlaceHoder = ๋น„์–ด ์žˆ๋Š” ์บ”๋ฒ„์Šค
    • ์ž์‹ํŽ˜์ด์ง€ = ๊ทธ ์บ”๋ฒ„์Šค์— ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋Š” ๊ฐœ๋ณ„ ์ฝ˜ํ…์ธ  ํŽ˜์ด์ง€

    ์ฆ‰, Main.master๋งŒ ์ˆ˜์ •ํ•˜๋ฉด ๋ชจ๋“  ํŽ˜์ด์ง€์— ๊ณตํ†ต์œผ๋กœ ๋ฐ˜์˜๋˜๊ธฐ ๋•Œ๋ฌธ์— ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ๋งค์šฐ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค!

     

     

    2. ๊ธฐ๋ณธ ๊ตฌ์กฐ ์‚ดํŽด๋ณด๊ธฐ

     

    2-1. ๋งˆ์Šคํ„ฐํŽ˜์ด์ง€ ์„ ์–ธ๋ถ€

    <%@ Master Language="C#" AutoEventWireup="true" CodeFile="Main.master.cs" Inherits="Master_Main" %>

     

    ํ•ญ๋ชฉ ์„ค๋ช…
    Master ์ด ํŒŒ์ผ์ด ๋งˆ์Šคํ„ฐํŽ˜์ด์ง€์ž„์„ ์„ ์–ธ
    CodeFile ์—ฐ๊ฒฐ๋œ C# ์ฝ”๋“œ๋น„ํ•˜์ธ๋“œ ํŒŒ์ผ(Main.master.cs)
    Inherits = "Master_Main" ์ด ๋งˆ์Šคํ„ฐํŽ˜์ด์ง€๊ฐ€ ์ƒ์†๋ฐ›๋Š” ํด๋ž˜์Šค๋ช…

     

     

    2-2. ์˜ˆ์‹œ ํŒŒ์ผ ๊ตฌ์กฐ

    /Views
     โ”œโ”€โ”€ Master/
     โ”‚    โ””โ”€โ”€ Main.master       ← ๊ณตํ†ต ๋ ˆ์ด์•„์›ƒ ์ •์˜
     โ”œโ”€โ”€ Pages/
     โ”‚    โ””โ”€โ”€ Home.aspx         ← ์‹ค์ œ ์ฝ˜ํ…์ธ ๊ฐ€ ๋“ค์–ด๊ฐˆ ํŽ˜์ด์ง€

     

    3. ๋งˆ์Šคํ„ฐํŽ˜์ด์ง€ ์˜ˆ์ œ ์ฝ”๋“œ

    ์•„๋ž˜๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ Main.master ๊ตฌ์กฐ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค. 

    <%@ Master Language="C#" CodeFile="Main.master.cs" Inherits="Master_Main" %>
    
    <html>
    <head runat="server">
        <title>Sample Site</title>
        <link rel="stylesheet" href="/css/site.css" />
        <script src="/js/common.js"></script>
    </head>
    <body>
        <form runat="server">
            <!-- ๊ณตํ†ต ์ƒ๋‹จ ๋ฉ”๋‰ด -->
            <div class="header">
                <a href="/" class="logo">MySite</a>
                <asp:LinkButton ID="lbtLogin" runat="server">๋กœ๊ทธ์ธ</asp:LinkButton>
                <asp:LinkButton ID="lbtLogout" runat="server">๋กœ๊ทธ์•„์›ƒ</asp:LinkButton>
            </div>
    
            <!-- ํŽ˜์ด์ง€ ๊ฐœ๋ณ„ ์ฝ˜ํ…์ธ ๊ฐ€ ๋“ค์–ด๊ฐˆ ์œ„์น˜ -->
            <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server" />
    
            <!-- ๊ณตํ†ต ํ•˜๋‹จ ํ‘ธํ„ฐ -->
            <div class="footer">
                <p>&copy; 2025 MyCompany. All rights reserved.</p>
            </div>
        </form>
    </body>
    </html>

     

     

     

    4. ํ•ต์‹ฌ: ContentPlaceHolder๋ž€?

    <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
    </asp:ContentPlaceHolder>
    • ๋งˆ์Šคํ„ฐํŽ˜์ด์ง€์—์„œ ์ฝ˜ํ…์ธ ๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฆฌ์ž…๋‹ˆ๋‹ค.
    • ๊ฐ ์ž์‹ ํŽ˜์ด์ง€์—์„œ๋Š” ์ด ์˜์—ญ์—๋งŒ ์ž์‹ ๋งŒ์˜ ์ฝ˜ํ…์ธ ๋ฅผ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.

     

    ์˜ˆ์‹œ ์ž์‹ ํŽ˜์ด์ง€(Home.aspx)

    <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
        <h2>ํ™ˆํŽ˜์ด์ง€ ์ฝ˜ํ…์ธ ์ž…๋‹ˆ๋‹ค</h2>
    </asp:Content>

     

    โœ… ์š”์•ฝ

    MasterPage๋Š” ์ „์ฒด ํŽ˜์ด์ง€์— ๊ณตํ†ต ์ ์šฉ๋˜๋Š” ๋ ˆ์ด์•„์›ƒ์„ ์ •์˜ํ•˜๊ณ , ContentPlaceHoder๋Š” ์ž์‹ ํŽ˜์ด์ง€ ์ฝ˜ํ…์ธ ๊ฐ€ ์‚ฝ์ž…๋˜๋Š” ์ž๋ฆฌ๋กœ

    ๋งˆ์Šคํ„ฐํŽ˜์ด์ง€ ํ•œ ๋ฒˆ ์„ค์ •ํ•˜๋ฉด ๊ฐ ํŽ˜์ด์ง€๋Š” ์ฝ˜ํ…์ธ ๋งŒ ์ž‘์„ฑํ•˜๋ฉด๋œ๋‹ค.!โœจ