O UserControl personalizado não está a registar-se em ASP.NET

Update: J0e3gan tentou o meu código em seu próprio projeto ,e funcionou bem( com uma pequena correção), então o problema parece ser com o Visual Studio em si, ao invés do código ou marcação. Eu tentei adicionar um novo UserControl também, e também não foi reconhecido. No entanto, VS está reconhecendo o AjaxControlToolkit que está registrado em web.config Muito bem. [/update]

Estou a tentar adicionar um costume chamado AdminControls ao site em que estou a trabalhar, mas continuo a receber o seguinte erro:

O elemento 'ControlName' não é um elemento conhecido. Isto pode ocorrer se houver um erro de compilação no site, ou na web.falta o ficheiro de configuração.

Estou a executar o Visual Studio Pro 2013, e o projecto é uma aplicação Web. Procurei na Web soluções, principalmente aqui na Stack Overflow, e tentei todas as que encontrei, mas não tive sorte. Deve haver alguma coisa que me esteja a escapar.

Aqui está a marca para 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>
E aqui está o codebehind para ele:
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
Tentei registar-me tanto no ficheiro como na página. Aqui estão os bits relevantes do Arquivo 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>
E por último, mas não menos importante, aqui está uma das páginas que estou a tentar colocar em:
<%@ 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>
Tentei todas as soluções que encontrei, mesmo que parecessem ridículas. Eu tenho ...
    Purgou o esconderijo do esquema.
  • limpo e reconstruído o solucao.
  • Estúdio Visual Reiniciado. Reiniciei o meu computador.
  • moveu o ficheiro para uma sub-pasta.
  • cortar e colar o código e marcar Para o mesmo lugar e voltar a guardar os arquivos.
[16]não há erros de construção, e o tagPrefix não aparece na suspensão Intellisense auto-completa.

Alguém consegue ver algum erro que eu tenha cometido, ou alguém sabe de uma solução que ainda não tentei? Não tentei matar um galo negro por causa do meu PC. ainda, mas estou a aproximar-me.

Author: FreeRangeOyster, 2014-05-11

1 answers

Usando o código que forneceu, incluí com sucesso o seu controlo de utilizador numa imagem de página abaixo. Não consegui reproduzir o erro que estás a ter.

O único erro que encontrei ao longo do caminho resultou dos dois caminhos diferentes que usaste para AdminControls.ascx:

  • src="~/AdminControls.ascx" o teu trecho.
  • Src="~/Controls/AdminControls.ascx" na tua Página excerpt.

Uma vez que fiz os caminhos consistentes (uns com os outros e o projecto de aplicação web scrach que eu criei), AdminControls apareceu em frmAdminCP.aspx Muito bem.

PoC frmAdminCP.aspx with AdminControls User Control

No caso de te ajudar, para o meu controlo de sanidade, simplesmente criei um novo ASP.NET Web Forms Application project in Visual Studio 2013 targeting. net 4.0, added a new Web Forms User Control item named AdminControls.ascx, added a new Web Form item named frmAdminCP.aspx, and pasted your code in all the appropriate places.
 0
Author: J0e3gan, 2014-05-11 05:13:08