asp.net custom-server-controls servercontrols asp.net-controls asp.net-customcontrol

Cómo registrar el control de servidor personalizado en la página ASP.NET



custom-server-controls servercontrols (4)

Tengo un proyecto y estoy intentando registrar un control de servidor personalizado (no hay un archivo .ascx ) en la página. Actualmente estoy usando

Declaración de clase

namespace MyApp.Controls{ public class CustomControl: WebControl{ public string Text { get { String s = (String)ViewState["Text"]; return ((s == null) ? String.Empty : s); } set { ViewState["Text"] = value; } } protected override void RenderContents(HtmlTextWriter output) { output.Write(Text); } } }

En mi página,

<%@ Register TagPrefix="myControls" Namespace="MyApp.Controls" %> <myControls:CustomControl runat="server" Text="What up!" />

Recibo un error del analizador, con el mensaje "Etiqueta de servidor desconocida ''myControls: CustomControl''".

¿Qué estoy haciendo mal?


Agregue un atributo de ensamblaje a su etiqueta de registro


Bueno, si este control está en otra biblioteca de clases, o incluso si está en la misma, no sería una mala idea especificar el ensamblaje del control en @Registrar:

<%@ Register TagPrefix="myControls" Namespace="MyApp.Controls" Assembly="MyApp" %> <myControls:CustomControl runat="server" Text="What''s up!" />

¡Limpie y reconstruya su solución también para verificar que todo esté compilado correctamente!


Debe poner su control en la carpeta App_Code (en el caso de que el control no esté en ensamblaje) o agregar una referencia al ensamblaje donde este control es:

<%@ Register TagPrefix="myControls" Namespace="MyApp.Controls" Assembly="SomeAssembly" %>

Pero adivinando, su control no está bajo la carpeta App_Code .


Si su control se reutilizará en varias páginas, es posible que desee registrarlo en web.config, como uno de los subelementos system.web / pages / controls en lugar de copiar y pegar la misma etiqueta <@Register en todas las páginas afectadas.

web.config:

<system.web> <pages ...> <controls> ... <add tagPrefix="myCompany" namespace="MyCompany.Whatever.Controls" assembly="Whatever"/> </controls>

thepage.aspx:

<myCompany:ControlClassName ID="TheStuff" runat="server" ... />