2014-05-11 1 views
3

Mise à jour: J0e3gan a essayé mon code dans son propre projet, et cela a bien fonctionné (avec une correction mineure), donc le problème semble être avec Visual Studio lui-même, plutôt que le code ou balisage. J'ai essayé d'ajouter un nouveau UserControl, et il n'a pas été reconnu non plus. Cependant, VS reconnaît le AjaxControlToolkit qui est enregistré dans web.config très bien. [/ mise à jour]UserControl personnalisé ne s'enregistre pas dans ASP.NET

Je suis en train d'ajouter une coutume UserControl nommé AdminControls sur le site, je travaille, mais je continue à obtenir l'erreur suivante:

Element 'ControlName' is not a known element. This can occur if there is a compilation error in the Web site, or the web.config file is missing.

Je suis en cours d'exécution de Visual Studio Pro 2013, et le projet est une application Web. J'ai cherché des solutions sur le Web, surtout ici sur Stack Overflow, et j'ai essayé tous ceux que j'ai pu trouver, mais je n'ai pas eu de chance. Il doit y avoir quelque chose qui me manque.

Voici le balisage pour AdminControls:

<asp:Table ID="tblAdminControls" runat="server"> 
    <asp:TableRow> 
     <asp:TableCell style="min-width: 50%;">&nbsp;</asp:TableCell> 
     <asp:TableCell style="width: 6em" id="tdCP" runat="server"> 
      <asp:Button Font-Bold="true" Font-Size="Smaller" Font-Overline="false" ID="btnCP" 
       runat="server" CssClass="Button" Text="Control Panel" /> 
     </asp:TableCell> 
     <asp:TableCell style="width: 5em"> 
      <asp:Button Font-Bold="true" Font-Size="Smaller" Font-Overline="false" ID="btnLogOut" 
       runat="server" CssClass="Button" Text="LogOut" /> 
     </asp:TableCell> 
    </asp:TableRow> 
</asp:Table> 

Et voici le codebehind pour elle:

Public Class AdminControls 
    Inherits System.Web.UI.UserControl 

    Private Sub Page_Init(sender As Object, e As EventArgs) Handles Me.Init 
     If Request.ServerVariables("SCRIPT_NAME") = "/frmAdminCP.aspx" Then 
      tdCP.Visible = False 
     End If 
    End Sub 

    Private Sub btnCP_Click(sender As Object, e As EventArgs) Handles btnCP.Click 
     Response.Redirect("frmAdminCP.aspx", False) 
    End Sub 

    Private Sub btnLogOut_Click(sender As Object, e As EventArgs) Handles btnLogOut.Click 
     Session.RemoveAll() 
     Session.Abandon() 
     Response.Redirect("frmLogin.aspx", False) 
    End Sub 
End Class 

J'ai essayé l'enregistrement AdminControls à la fois dans le fichier web.config et sur la page . Voici les bits correspondants du fichier web.config:

<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"> 
    <controls> 
     <add tagPrefix="ajaxToolkit" assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" /> 
     <add tagPrefix="klc" tagName="AdminHeader" src="~/AdminControls.ascx" /> 
    </controls> 
</pages> 

Et last but not least, voici l'une des pages que je suis en train de mettre AdminControls dans:

<%@ Page Title="" Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" 
    EnableEventValidation="false" Inherits="ProjectName.frmAdminCP" CodeBehind="frmAdminCP.aspx.vb" %> 

<%@ Register TagPrefix="klc" TagName="AdminHeader" Src="~/Controls/AdminControls.ascx" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"> 
    <div id="content"> 
     <h1>Admin <span class="pagetitle">Control Panel</span>&nbsp;&nbsp;&nbsp;&nbsp;</h1> 
     <klc:AdminHeader runat="server" id="ahControls" /> 
     <div> 
      <h2>Users</h2> 
      <a href="frmUserList.aspx">View Existing Users</a><br /> 
      <a href="frmUserMod.aspx">Add a New User</a> 
      <h2>Usage Reports</h2> 
      <a href="frmReportTrack.aspx">View User Activity Report</a><br /> 
      <a href="frmProjectLog.aspx">View Administrative Log</a> 
      <h2>Project Management</h2> 
      <a href="frmProjectList.aspx">View Projects</a><br /> 
      <a href="frmDocManagement.aspx">Manage Project Files</a> 
     </div> 
    </div> 
</asp:Content> 

J'ai essayé tous les CORRECTIF je Je les ai rencontrés, même s'ils semblaient ridicules. J'ai:

  • Purgé le cache de schéma.
  • Nettoyé et reconstruit la solution.
  • Redémarré Visual Studio.
  • Redémarré mon ordinateur.
  • Déplacé le fichier dans un sous-répertoire.
  • Coupez et collez le code et le balisage au même endroit et réenregistrez les fichiers.

Il n'y a pas d'erreurs de génération et le tagPrefix n'apparaît pas dans la liste déroulante Intellisense à exécution automatique.

Quelqu'un peut-il voir les erreurs que j'ai faites, ou est-ce que quelqu'un connaît une solution que je n'ai pas encore essayée? Je n'ai pas encore essayé d'abattre un coq noir sur mon PC, mais je m'en approche.

Répondre

0

En utilisant le code que j'ai fourni, j'ai réussi à inclure votre contrôle utilisateur dans une page - capture d'écran ci-dessous. Je n'ai pas pu reproduire l'erreur que vous obtenez.

La seule erreur que je rencontrais sur le chemin découlaient des deux chemins différents que vous avez utilisé pour AdminControls.ascx:

  • src="~/AdminControls.ascx" votre extrait Web.config.
  • Src="~/Controls/AdminControls.ascx" dans votre extrait de page (frmAdminCP.aspx).

Une fois que je fait les chemins cohérents (entre eux et le projet d'application Web scrach j'ai créé), AdminControls montré dans frmAdminCP.aspx très bien:

PoC frmAdminCP.aspx with AdminControls User Control

Dans le cas où il vous aide, pour ma vérification d'intégrité J'ai simplement créé un nouveau projet ASP.NET Web Forms Application dans Visual Studio 2013 ciblant .NET 4.0, ajouté un nouvel élément de contrôle utilisateur Web Forms nommé AdminControls.ascx, ajouté un nouvel élément de formulaire Web nommé frmAdminCP.aspx et collé votre code dans tous les endroits appropriés.

+1

Merci d'avoir essayé. Les chemins différents sont un artefact des diverses tentatives que j'ai faites pour résoudre le problème; merci d'avoir attrapé ça. De votre expérience, il semble que le problème est strictement avec Visual Studio et pas avec le code lui-même. Je vais mettre à jour la question pour refléter cela. – FreeRangeOyster

Questions connexes