2009-11-03 12 views
14

J'ai donc un autre noodle-scratcher (pour moi quand même). J'essaie de créer mon propre contrôle personnalisé dans un CMS J'ai seulement un code source partiel pour (c'est-à-dire des échantillons que le fournisseur m'a fournis). Fondamentalement, j'ai créé une classe appelée DataDefinitionContent qui s'étend ControlBase. Maintenant, d'après ce que je peux tirer des métadonnées, ControlBase s'étend UserControl, donc j'aurais pensé que cela fonctionnerait sans drame. Quelqu'un peut-il faire la lumière sur pourquoi cela pourrait ne pas fonctionner pour moi?Mon contrôle est "pas autorisé ici, car il ne prolonge pas la classe 'System.Web.UI.UserControl'"


Ma Classe:

public partial class DataDefinitionContent : ControlBase, ICustomControl<DataDefinition> 
{ 
... Stuff 
} 

ControlBase:

using System; 
using System.Web.UI; 
namespace CMS.Web 
{ 
    public class ControlBase : UserControl 
    { 
    ... Stuff 
    } 
} 

Mon fichier ascx:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="DataDefinitionContent.ascx.cs" 
    Inherits="CMS.Admin.WebUI.CustomControls.DataDefinitionContent, CoA.Admin.WebUI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" %> 

L'erreur que je reçois:

Parser Message d'erreur: 'CMS.Admin.WebUI.CustomControls.DataDefinitionContent, CoA.Admin.WebUI, Version = 1.0.0.0, Culture = neutral , PublicKeyToken = null' n'est pas autorisé ici parce qu'il fait ne pas étendre la classe 'System.Web.UI.UserControl'.

Ligne 1: <% @ Control Language = "C#" AutoEventWireup = "true" behind = "DataDefinitionContent.ascx.cs"

+0

Votre classe partielle est-elle dans un espace de noms? –

+0

En fait, non, ce n'est pas le cas. Pouvez-vous me donner une idée de la façon dont j'irais déchiffrer l'espace de noms dans lequel je devrais le mettre? (OP est encore un débutant) –

+0

bien vous avez = "CMS.Admin.WebUI.CustomControls.DataDefinitionContent, CoA.Admin.WebUI, Version = 1.0.0.0, Culture = neutre, PublicKeyToken = null" dans vos héritages que je ne ' Je pense que vous avez besoin. L'espace de noms ressemble à CMS.Admin.WebUI.CustomControls, bien que controlbase ressemble à son dans CMS.Web –

Répondre

11

Essayez de mettre votre classe partielle dans

namespace CMS.Web 
+0

Votre suggestion a fonctionné, mais j'ai fini par aborder le problème sous un angle différent. Merci de votre aide. –

+0

Cool homme. Quelle approche avez-vous prise? L'ensemble du problème d'espace de noms peut devenir un véritable cauchemar si vous convertissez un site Web en application Web. –

4

Je recevais cette erreur lorsque le nom de la classe qui étendait la classe UserControl n'était pas le nom utilisé dans l'inclusion ASP. J'ai fait le changement au nom de la classe et redéployé la solution. Le problème a été résolu.