Tutorial :Page Inheritance in custom Sharepoint Application



Question:

I have a default.aspx in a folder _layouts/sandbox on the sharepoint server.

It has the following code:

using System;  using System.Configuration;  using System.Data;  using System.Linq;  using System.Web;  using System.Web.Security;  using System.Web.UI;  using System.Web.UI.HtmlControls;  using System.Web.UI.WebControls;  using System.Web.UI.WebControls.WebParts;  using System.Xml.Linq;  using Microsoft.SharePoint;  using Microsoft.SharePoint.WebControls;    using System.Web.Configuration;    namespace sandbox  {        public partial class _Default : LayoutsAppPage      {            protected void Page_Load(object sender, EventArgs e)          {              SPWeb web = SPContext.Current.Web;              LabelTitle.Text = web.Title;                if (Page.IsPostBack == false)              {                  //Label1.Text = "Fahrenheit to Celsius:";              }          }            protected override void OnPreInit(EventArgs e)          {              base.OnPreInit(e);                try              {                  this.MasterPageFile = SPContext.Current.Web.MasterUrl;              }              catch              {              }          }            }    }  

it is supposed to inherint the LayoutsAppPage class so that I can use that to do the OnPreInit functions in all pages in the 'sandbox' application. here is the code to LayoutsAppPage.aspx.cs in the same directory

using System;  using System.Configuration;  using System.Data;  using System.Linq;  using System.Web;  using System.Web.Security;  using System.Web.UI;  using System.Web.UI.HtmlControls;  using System.Web.UI.WebControls;  using System.Web.UI.WebControls.WebParts;  using System.Xml.Linq;  using Microsoft.SharePoint;  using Microsoft.SharePoint.WebControls;    using System.Web.Configuration;    namespace sandbox  {      public class LayoutsAppPage : System.Web.UI.Page      {          protected override void OnPreInit(EventArgs e)          {              base.OnPreInit(e);                try              {                  this.MasterPageFile = SPContext.Current.Web.MasterUrl;              }              catch              {              }          }      }  }  

i get the following error when running the page

c:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\LAYOUTS\sandbox\Default.aspx.cs(20): error CS0246: The type or namespace name 'LayoutsAppPage' could not be found (are you missing a using directive or an assembly reference?)
at System.Web.Compilation.AssemblyBuilder.Compile()

i did notice that in the line "public partial class _Default : LayoutsAppPage" that LayoutsAppPage does not turn light blue like it should for the base class. If the line is "public partial class _Default : System.Web.UI.Page" the page loads fine. maybe i've declared the basepage incorrectly?

edit: by request -

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="sandbox._Default" MasterPageFile="~/_layouts/application.master" %>    <%@ Assembly Name="Microsoft.SharePoint.ApplicationPages,Version=12.0.0.0, Culture=neutral,PublicKeyToken=71e9bce111e9429c" %>    <%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>  <%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>    <%@ Register TagPrefix="wssuc" TagName="InputFormSection" Src="/_controltemplates/InputFormSection.ascx" %>  <%@ Register TagPrefix="wssuc" TagName="InputFormControl" Src="/_controltemplates/InputFormControl.ascx" %>  <%@ Register TagPrefix="wssuc" TagName="ButtonSection" Src="/_controltemplates/ButtonSection.ascx" %>  <%@ Register TagPrefix="wssuc" TagName="ToolBar" Src="/_controltemplates/ToolBar.ascx" %>  <%@ Register TagPrefix="wssuc" TagName="ToolBarButton" Src="/_controltemplates/ToolBarButton.ascx" %>  


Solution:1

If your assembly is deployed to the GAC or signed with public key, then you will have to specify the inherits attribute of your Page element to use the full type & assembly name such as below:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="_Default.aspx.cs"   Inherits="CustomAssemblyNamespace.sandbox._Default, CustomAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1a01d56a735c19c1"  %>  

Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »