방법: 프로그래밍 방식으로 리소스 값 검색

Visual Studio 2010

업데이트: 2007년 11월

선언 구문을 사용하여 ASP.NET 서버 컨트롤 속성의 값을 리소스 값으로 설정할 수 있습니다. 또는 리소스 값을 프로그래밍 방식으로 검색할 수도 있습니다. 디자인 타임에 리소스 값을 알 수 없거나 런타임 조건에 따라 리소스 값을 설정하려는 경우 이 방법을 사용할 수 있습니다.

적절한 형식으로 캐스팅할 수 있는 개체를 반환하는 메서드를 사용하는 로컬 및 전역 리소스 파일에서 모두 리소스 값을 가져올 수 있습니다. ASP.NET에서는 강력한 형식을 지정하여 전역 리소스를 컴파일하므로 강력한 형식의 멤버를 사용하여 전역 리소스를 가져올 수도 있습니다.

프로그래밍 방식으로 리소스 값을 검색하려면

  • GetLocalResourceObject 또는 GetGlobalResourceObject 메서드를 호출하여 각각 로컬 또는 전역 리소스 파일에서 특정 리소스를 읽습니다. 이러한 오버로드된 메서드는 HttpContextTemplateControl 클래스에서 사용할 수 있습니다.

    GetGlobalResourceObject 메서드는 리소스 클래스의 이름과 리소스 ID를 사용합니다. 이때 클래스 이름은 .resx 파일 이름을 기반으로 합니다. 예를 들어 WebResources.resx 파일과 지역화된 모든 관련 파일은 WebResources라는 클래스 이름에서 참조합니다.

    GetLocalResourceObject 메서드는 ResourceKey 속성을 나타내는 리소스 이름을 사용합니다.

    다음 코드 예제에서는 로컬 및 전역 리소스 파일에서 리소스 값을 가져오는 방법을 보여 줍니다. 메서드에서 개체가 반환되므로 리소스를 적절한 형식으로 캐스팅해야 합니다.

    App_LocalResources라는 특수 폴더에 저장된 로컬 기본 리소스 파일은 ASP.NET 페이지에 따라 이름이 지정됩니다. 예를 들어 다음 코드가 Default.aspx 페이지에서 사용되는 경우 리소스 파일의 이름은 Default.aspx.resx여야 합니다. 이 예제에서는 "Found Resources" 값이 설정된 문자열 리소스 Button1.Text를 이 파일에 추가합니다.

    이 예제에서는 또한 App_GlobalResources라는 특수 폴더에 저장된 전역 기본 리소스 파일의 이름이 WebResourcesGlobal.resx로 지정됩니다. http://go.microsoft.com/fwlink/?LinkId=49295 값이 설정된 문자열 리소스 LogoUrl 또는 다른 이미지의 URL을 추가하십시오.

    <%@ Page Language="VB" %>
    
    <script runat="server">
        Protected Sub Button1_Click( _
            ByVal sender As Object, ByVal e As System.EventArgs)
            Button1.Text = _
                GetLocalResourceObject("Button1.Text").ToString()
            Image1.ImageUrl = _
                CType(GetGlobalResourceObject("WebResourcesGlobal", _
               "LogoUrl"), String)
            Image1.Visible = True
        End Sub
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Untitled Page</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Button ID="Button1" runat="server" 
                OnClick="Button1_Click" 
                Text="Get Resources" />
            <asp:Image ID="Image1" runat="server" 
                Visible="false" />
        </div>
        </form>
    </body>
    </html>
    

    <%@ Page Language="C#" %>
    
    <script runat="server">
        protected void Button1_Click(object sender, EventArgs e)
        {
            Button1.Text = 
                GetLocalResourceObject("Button1.Text").ToString();
            Image1.ImageUrl = 
                (String)GetGlobalResourceObject(
                "WebResourcesGlobal", "LogoUrl");
            Image1.Visible = true;
        }
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head id="Head1" runat="server">
        <title>Untitled Page</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Button ID="Button1" runat="server" 
                OnClick="Button1_Click" 
                Text="Get Resources" />
            <asp:Image ID="Image1" runat="server" 
                Visible="false" />
        </div>
        </form>
    </body>
    </html>
    

강력한 형식 지정을 사용하여 전역 리소스를 검색하려면

  • 다음 구문을 사용하여 리소스를 가져옵니다.

    Resources.Class.Resource
    

    리소스가 Resources 네임스페이스로 컴파일되고 기본 리소스는 각각 Resources 클래스의 멤버가 됩니다. 예를 들어 기본 리소스 파일 WebResources.resx를 만든 경우 이 파일에 WelcomeText라는 리소스가 포함되어 있으면 다음 코드 예제와 같이 코드에서 리소스를 참조할 수 있습니다.

    Dim welcome As String
    welcome = Resources.WebResources.WelcomeText
    

    String welcome;
    welcome = Resources.WebResources.WelcomeText;
    
표시: