2010-08-02 6 views
0

J'ai un fichier default.aspx dans un dossier _layouts/sandbox sur le serveur SharePoint.Héritage de page dans l'application Sharepoint personnalisée

Il a le code suivant:

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 
      { 
      } 
     } 



    } 

} 

il est censé inherint la classe LayoutsAppPage pour que je puisse l'utiliser pour faire les fonctions de onPreInit dans toutes les pages dans l'application « bac à sable ». voici le code à LayoutsAppPage.aspx.cs dans le même répertoire

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 l'erreur suivante lors de l'exécution la page

c: \ Program Files \ Common Files \ Microsoft Shared \ Web serveur Extensions \ 12 \ TEMPLATE \ LAYOUTS \ sandbox \ Default.aspx.cs (20): CS0246 d'erreur: Le type ou espace de noms nom 'LayoutsAppPage' ne pouvait pas être trouvé (vous manque une directive à l'aide ou un ensemble référence?)
à System.Web.Compilation.AssemblyBuilder.Compile()

J'ai remarqué que, dans la ligne « classe partielle publique _Default: LayoutsAppPage » que LayoutsAppPage ne tourne pas bleu clair comme il se doit pour la classe de base. Si la ligne est "public partial class _Default: System.Web.UI.Page", la page se charge correctement. peut-être que j'ai déclaré la page de base incorrectement?

modifier: sur demande -

<%@ 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" %> 
+0

Pouvez-vous également afficher toutes les directives <%@ %> en haut de votre page de marquage? – kbrimington

+0

J'ai ajouté tous à la fin du message original, merci de prendre un coup d'oeil kbrimington. – Josh

+0

Je pourrais être saisissant aux pailles, donc je posterai seulement comme commentaire. J'utilise toujours le nom qualifié d'assembly de la classe dans l'attribut Inherits de la directive @Page. De même, vérifiez que tous vos fichiers .cs sont configurés pour être compilés dans le projet. Assurez-vous également que vous utilisez un projet d'application Web au lieu d'un site Web. Bonne chance! – kbrimington

Répondre

0

Si votre ensemble est déployé dans le GAC ou signé avec la clé publique, vous devez spécifier l'attribut hérite de votre élément de page à utiliser l'assemblage de type complet & nom comme ci-dessous:

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