2010-03-07 4 views
1

SharePoint Server 2007 + C# + .Net 3.5 + VSTS 2008 + ASP.Net을 사용하고 있습니다. 그리고 공동 작업 포털 템플리트를 사용하고 있습니다.ASP.NET/SharePoint 마스터 페이지 문제

사용자 지정 aspx 페이지를 개발하여 사이트의 _layout 폴더에 넣고이 aspx 페이지에 SharePoint 사이트의 default.master를 적용하려고합니다. 이 목표를 달성하는 방법에 대한 모든 샘플?

답변

1

PreInit 이벤트에 코드를 삽입하면 사용자 지정 페이지에서 현재 사이트의 마스터 페이지를 사용할 수 있습니다.

protected override void OnPreInit(EventArgs e) 
{ 
base.OnPreInit(e); 
SPWeb myWeb = SPControl.GetContextSite(Context).OpenWeb(); 
string strUrl = myWeb.ServerRelativeUrl + "/_catalogs/masterpage/my.master"; 
this.MasterPageFile = strUrl; 
} 

기본 마스터 페이지를 사용하려면 my.master를 default.master로 바꿉니다. 또는 spweb의 MasterUrl 속성을 확인하고 대신 사용하십시오.

어느 쪽이든 올바른 방향으로 가야합니다.

+0

코드를 사용할 때 SharePoint 알 수없는 오류 페이지가 표시됩니다. – George2

+0

사용하는 경우 작동합니까? SPWeb myWeb = SPControl.GetContextWeb (Context); –

1

SharePoint Designer를 사용하는 경우 페이지를 마우스 오른쪽 단추로 클릭 한 다음 적용 할 마스터 페이지를 선택할 수 있습니다.

+0

SharePoint Designer를 사용하여 사이트를 열었습니다. _layout 폴더에 페이지를 넣지 만 SharePpoint 디자이너 왼쪽 위 폴더 목록에 _layout 폴더가 없습니다. 어떤 아이디어가 잘못 되었나요? – George2

+0

페이지를 마우스 오른쪽 버튼으로 클릭 한 후 마스터 페이지를 선택하는 방법은 무엇입니까? – George2

1

이렇게하는 가장 좋은 방법은 HttpModule을 사용하는 것입니다. 이렇게하면 모든 응용 프로그램 페이지 (예 : LAYOUTS 폴더의 페이지)에 대해 사용자 정의 마스터 페이지를 사용할 수 있습니다. 기능을 사용하여 배포 할 수 있으며 웹 응용 프로그램별로 활성화 할 수 있습니다 (웹 응용 프로그램 범위 인 web.config에 httpmodule을 등록해야 함을 참조하십시오.)

웹 응용 프로그램 범위를 지정하면 최종 사용자가 사이트의 프론트 엔드와 같은 단일 페이지 대신 일정한 사용자 경험을 유지하면서 다른 모든 (Out of the box) 애플리케이션 페이지는 여전히 기본 셰어 포인트 application.master를 사용합니다.

코드 예와 자세한 설명은 here입니다.

P. 누락 된 컨텐트 위치 표시기 때문에 위 코드를 사용하여 오류가 발생합니다. 사용자 지정 마스터 페이지의 복사본을 만들어야합니다. 스타일은 동일 할 수 있지만 응용 프로그램 페이지는 프런트 엔드 마스터 페이지보다 더/다른 ContentPlaceHolders를 사용합니다.

그냥 사용자 지정 마스터 페이지를 복사하는, 말, CustomMasterEdit.master CustomMaster.master에서 이름을 변경하고 응용 프로그램 페이지 스타일링을 위해 그것을 사용, 셰어, 자리가 누락을 알려주는 오류가 발생까지 필요한 자리를 계속 추가 할 것이다 페이지가 작동합니다 (2 ~ 3 개의 추가 자리 표시자가 필요하다고 생각합니다).

P.P.S. 쉐어 포인트 표시 오류를 확인하려면 web.config으로 이동하여 <SharePoint> 태그를 찾고 callstack 속성을 false에서 true으로 변경하십시오. 그런 다음 customErrors 태그를 찾아 mode 속성을 "off"으로 설정하십시오. 디버깅을 완전히 사용하려면 ASP.NET 추적을 사용하도록 설정할 수도 있습니다. 물론 당신이 셰어 디스플레이 실제 오류 메시지를 만들 수있는 Web.config의 수정에 .... 프로덕션 환경에서

더 많은 정보를 이렇게 안됩니다은 here찾을 수 있습니다.

+0

의견을 보내 주셔서 감사합니다. – George2