2011-08-24 6 views
2

저는 현재 루트 폴더에 aspx 파일이 있고 모든 ascx 파일을 포함하는 "UserControls"라는 폴더가있는 프로젝트에서 작업하고 있습니다. 내가 리소스를 App_GlobalResources 및 App_LocalResources 리소스 파일에 사용 그래서 그것을 지역화했다. 그러나 사용자가 자신의 리소스 파일을 읽지 않기 때문에 컨트롤에 문제가있었습니다. 몇 가지 테스트를하기 시작했고, 루트 폴더가 아닌 폴더에있는 App_LocalResources 하위 폴더에 리소스 파일을 놓는 경우에만 리소스 파일을 읽는 것으로 나타났습니다. 사용자 컨트롤이있는 하위 디렉토리가 너무 많아서 각 로컬 리소스 파일을 기본 포함 폴더에 배치하지 않으려합니다. 그것은 단지 이해가되지 않습니다. 누구 아이디어가 있으십니까? 미리 감사드립니다.사용자 정의 컨트롤은 리소스 파일을 읽지 않습니다 ... WebForms .NET에서 리소스 파일을 올바르게 구성합니까?

답변

3

프로젝트 파일을 보지 않고 루트 App_LocalResources 폴더에서 리소스를 읽지 않는 페이지는 파일 이름이 다른 페이지와 충돌하는 페이지라고 생각합니다. 예 : /cart/Default.aspx와 /myaccount/Default.aspx가 있으면 ASP.NET은 /App_LocalResources/Default.aspx.resx와 일치하는 것을 알 수 없습니다. 따라서 해당 페이지의 리소스 파일이 자신의 하위 폴더에 있어야합니다. 즉, 일치하는 페이지가 무엇인지 분명하게하기 위해서입니다. 글로벌 자원

  1. 변경 모든 : 당신은 세 가지 옵션이이 문제를 방지하려면

    나는 생각한다. 리소스 이름이 잘 정리되어 있고 어느 페이지에 적용되는지는 분명히 알 수 있습니다.

  2. 페이지 파일 이름을 고유하게 변경하십시오. 이것은 앱에서 리디렉션뿐만 아니라 SEO가 중단 될 수 있기 때문에 꽤 추악합니다.
  3. 로컬 리 제이션에 ASP.NET 리소스를 사용하지 말고 직접 솔루션을 구하십시오. 진심으로, 리소스는 내 경험상 대용량 프로젝트에 맞게 확장되지 않으며 사용자 지정 솔루션에 대한 찬성으로 무시되는 ASP.NET의 훌륭하고 유용한 기능 중 하나입니다 (테마, 모바일 지원, 역할 참조). . 예를 들어 ASP.NET 응용 프로그램이 현지화 된 텍스트를 반환해야하는 중간 계층 DLL을 호출하면 어떻게됩니까? 이 경우 자신의 저수준 자원 로컬라이제이션 시스템을 갖추는 것이 훨씬 낫습니다.
+0

나는 # 1에 대한 추천을 할 것이다. 나는 당신이 한 것과 똑같은 일을 겪었고, 지역 자원을 사용하려고 시도했다. – chris

+0

당신이 말했듯이 Default.aspx라는 이름의 파일 두 개가 있습니다 ... 자원으로 유지해야 할 것입니다. 이미 프로덕션 환경에있는 프로젝트이므로 너무 많이하지 않아도됩니다. 어쨌든 아이디어를 제공해 주셔서 감사합니다! –

0

App_LocalResources 디렉토리가 usercontrol의 같은 ​​폴더에 있는지 확인하십시오.

관련 문제