2010-08-17 6 views
0

마스터 페이지와 중첩 된 마스터 페이지를 사용하는 타사 asp.net 응용 프로그램과 함께 작업하고 있습니다. 내 요구는 동적으로 각 페이지 (.aspx)에 대한 마스터 페이지 파일을 설정하는 것입니다. 응용 프로그램은 기본적으로 각 페이지의 강력한 형식의 @Page 지시문에 마스터 페이지 파일을 설정합니다. 내가 게으르므로 앞으로의 업그레이드와의 충돌을 최소화하고 싶기 때문에 각 페이지 (50 페이지 이상)의 강력한 입력 지시문을 변경하고 싶지는 않습니다.강력한 형식의 @page masterpagefile을 덮어 씁니다.

protected override void OnPreInit(EventArgs e) 
    { 
    this.MasterPageFile = "~/MasterPages/MyMaster.master"; 
    } 

모든 것이 완벽하게 작동합니다 :

내 솔루션은 기본 masterpage 클래스를 사용하고이 같은 OnPreInt 이벤트를 무시하는 것이었다. 내 질문은 : 이것은 나쁜 생각입니까? 왜 그런가요? 사실 일 수는 너무 쉽습니다.

감사합니다.

답변

0

아주 좋은 생각입니다. 마스터 페이지의 절반은 이것을 할 수 있다는 것입니다.

그들에 대한 하나의 귀찮은 사실은 존재하지 않는 파일을 참조하게 할 수 없다는 것입니다 (항상 마스터 프로그램을 결정할 때 명확하게 나타납니다). 그렇다면 항상 새로운 무언가로 설정하려고합니다. "Dummy master page, 이것은 프로그램 방식으로 옮겨 질 것입니다."라는 페이지로 시작하고 싶습니다. 따라서 페이지에서 사용되는 masterpage를 추적하는 모든 사람에게 이것이 일어나고 있음이 분명합니다. .

+0

감사합니다. 나는 실제로 이것을 전에 보았고 왜 또는 그것이 무엇인지를 보지 못했습니다. 이는 좋은 생각이며 Koistya가 언급 한 미래의 혼란의 일부를 완화하는 것으로 보입니다. 나의 편집증은 줄어들고 있습니다. – trevorc

0

코드/논리를 더욱 복잡하게 만듭니다. 예를 들어 프로젝트를 계속 진행 한 다른 사람들은이를 빨리 이해하는 데 어려움을 겪을 수 있습니다. IMHO

+0

의미가 있습니다. 이상적으로는 강하게 입력 된 부분을 모두 제거하려고하지만 제어하지는 않습니다. 주로 테마 작성을 쉽게하기위한 것입니다. – trevorc

+0

Joe, 가독성 용이성 이외의 다른 방법으로는 어떤 문제도 나타나지 않습니다. 네이티브 ASP.NET 테마를 파고들 수는 있지만 접근 방법이 더 간단 할 수도 있습니다. –

+0

주제를 멀리하지 않고서는 나는 커스텀 테마와 레이아웃을 다른 사람의 마크 업 (masterpage)에 '맞추는'것이 번거롭다 고 느낀다. 나 자신의 클래스/이드/etc를 사용하여 레이아웃/테마를 디자인하고 필요할 때 변경할 수있는 자유를 원했습니다. 입력 Koistya 주셔서 감사합니다. – trevorc

0

문제없이 작동합니다. 마스터 페이지는 OnPreInit 이후까지 컨트롤 컬렉션에 적용되지 않습니다. 나는이 함께 볼 수있는 유일한 가능한 문제는

1) 귀하의 devs이 스위치 (기술 부채)

2) 모두 MasterPage 클래스 페이지가 때마다로드해야합니다 일어나는 기억해야 할 것입니다 요청 됨 (성능 문제)