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" ... />