본문 바로가기

잡다한 기술

[ASP.NET MVC5]레이저 문법(Razor)-레이저 문법에서 동적 리소스를 가져와야 할 때




# 개발 환경


 운영체제(OS) 

:

  Window 10 Home edition - 64bit

 통합 개발 환경(IDE) 

:

  Visual Studio 2017



# 동적으로 리소스를 가지고 오고 싶을 때


ASP.NET MVC5로 개발을 하면서 글로벌 웹을 구현하게 되면 리소스를 자주 사용하게 됩니다.

왜냐하면 각 나라별로 언어가 변동이 되어야 되기 때문입니다.


그런데 이 리소스를 사용하면서 동적으로 리소스가 생성되어야 하는 경우가 존재합니다.

예를 들면 아래와 같은 상황이 존재하는 경우가 있습니다.


@{

for(int i = 0; i < 10; i++){

Resources.String_ + i    //String_1, String_2, String_3 이런식으로 사용하고 픔 

}

 }


위 소스와 같이 저런식으로 리소스를 사용하고 싶은데

저런식으로 사용을 할수가 없습니다.


왜냐하면 리소스를 저런식으로 써버리면 Resources.String_ 이 이름에 대한 리소스를 찾기 떄문입니다.

때문에 리소스 오류가 발생합니다.


이럴때 필요한 함수가 있습니다.

바로 아래의 @Resources.ResourceManager.GetString() 이라는 함수입니다.


@Resources.ResourceManager.GetString(string)

설명

string매개변수에 리소스 이름을 입력해 주면 해당 리소스의 문자열을 반환하는 역활을 하는 


이 함수는 매게변수로 String 형식의 문자열을 입력받아,

그 문자열을 리소스 네임으로 인식하여 일치하는 문자열을 반환해 주는 함수 입니다.


즉 아래와 같은 소스 형태가 가능하다는 것 입니다.



@{

for(int i = 0; i < 10; i++){

Resources.ResourceManager.GetString("String_ "+ i)    //String_1, String_2, String_3 

이런식으로 사용이 가능

}

 }



이 함수를 이용하면 레이저를 이용하여 리소스를 동적으로 받아올 수 있습니다.



# 마무리


위 포스트는 제가 직접 제작한 것 입니다.

그렇기 때문에 틀린점이나 설명이 엉성한 점이 존재할 수 있습니다.

만약 틀린점이나 설명이 엉성한 부분이 존재하면 댓글로 알려주세요.

빠른 처리 하도록 하겠습니다.

읽어주셔서 감사합니다.