2009-10-13 5 views
1

여기에 몇 가지 다른 스레드를 통해 읽었지만 아무도 내 문제를 해결하는 방법을 설명하지 못했습니다.asp.net, gettype() 및 정규화 된 클래스 이름

나는

namespace Company.Web.UI.Content 
{ 
    public partial class Home_LoggedOut : Company.Web.UI.CompanyPage 
    { 
    string _myType = this.GetType().FullName.Replace(".", "_"); 
    } 
} 

이 지금은 같은 것을 얻기 위해 희망 한 것 (코드 숨김) 다음 페이지와 웹 응용 프로그램이 :

Company_Web_UI_Content_Home_LoggedOut 

을 대신 나는군요 :

ASP_home_loggedout_aspx 

클래스 구조와 작동 방식에 대해 분명히 알지 못합니다. 이해하고 싶습니다. 이 시나리오에서 정규화 된 네임 스페이스 + 클래스 이름을 가져올 수있는 방법이 있습니까?

이 형식을 기본 형식 (Company.Web.UI.CompanyPage)에 포함 시켜서 뭔가를 할 수있게 해주는 것이 이상적입니다. 제안 된 내용도 모두 해당 수준에서 작동해야합니다.

희망은 내가 완전히 (물론, 나는 아마,하지만 희망 주위에 방법이있다!) 여기에 요점은 아니에요

건배, 테리을

업데이트 : 대답로했다 :

string _myType = this.GetType().BaseType.FullName.Replace(".", "_"); 

들 덕분에 :)

+0

천재) = 나는 그것을 시도 적이 솔직히

this.GetType().BaseType.FullName.Replace(".", "_") 

을하지만, 이론적으로 작동합니다 : 당신이 시도 할 수) - 정답으로 원래 게시물을 수정하겠습니다. –

답변

1

실제로 두 개의 클래스가 뒤에 당신이 코드를 사용하여 페이지를 . 하나는 페이지의 클래스에서 상속 된 코드의 코드입니다. 그것이 당신이 그 이름을 얻은 이유입니다. 이 시도하고 그것이 작동하는지 확인 :

string _myType = this.GetType().BaseType.FullName.Replace(".", "_"); 
+0

+1하지만 그보다 조금 더 복잡합니다. ASPX 페이지의 컨트롤 마크 업 대부분이 코드 숨김 부분 클래스가 결합되어 전체 기본 클래스를 형성하는 부분 클래스를 만듭니다. 종종 인라인 코드 나 runat = "server"스크립트 요소가있을 수있는 곳을 제외하고 페이지 상속 클래스에있는 클래스는 거의 없습니다 (코드 숨김을 사용할 수있을 때 왜 사용할지 모름). – AnthonyWJones

1

ASP.NET 엔진이 귀하의 ASPX 마크 업을 기반으로 클래스를 생성하고이 클래스는 Company.Web.UI.Content.Home_LoggedOut에서 상속됩니다. 감사 먼저했기 때문으로 정답을 표시 rslite()와 비탈리 (마크 업 -

관련 문제