Hay ocasiones en que es necesario que alguna Master.Page o un Page Layout de MOSS tengan código especial. Recordemos que al final del día estamos trabajando con una aplicación ASP.NET, por lo tanto para poder habilitar esta posibilidad, es necesario modificar el web.config del sitio de MOSS o WSS correspondiente ya agregar la siguiente configuración:

XML:
  1. <SharePoint><SafeMode ….>….
  2. <PageParserPaths> 
  3. <PageParserPath VirtualPath=“/_catalogs/masterpage/*“ CompilationMode=“Always“ AllowServerSideScript=“true“ IncludeSubFolders=“true“ />
  4. </PageParserPaths>

El atributo VirtualPath es importante ya que aquí especificamos los paths dentro de los cuales los archivos podrán tener code behind, de tal forma que podemos tener un valor como el siguiente si queremos permitir code behind en todos los paths del sitio:

XML:
  1. VirtualPath="/*"

 

Una vez modificado el web.config del sitio, el código se puede agregar en el estilo “inline code” de ASP.NET, es decir, en el mismo archivo ASPX dentro de una tag <script type=”C#” runat=”server”>, teniendo con esto disponible el acceso a los eventos de una página ASP.NET común y corriente, además de acceso a controles que pudiesen existir en nuestra Master.Page o Page Layout:

HTML:
  1. <script type=“text/c#” runat=“server”>
  2. protected void Page_Load(object sender, EventArgs e)
  3. {
  4.      SPSite oSiteCollection = SPContext.Current.Site;
  5. }
  6. </script>

De esta forma, también se tiene acceso al modelo de objetos de Sharepoint, para lo cual es necesario agregar la referencia a los namespaces correspondientes, agregando tags como esta al principio del código HTML:

HTML:
  1. <%@ Import Namespace=“Microsoft.SharePoint” %>

Más info:

http://msdn.microsoft.com/en-us/library/bb892187.aspx