Benutzerdefiniertes ASP.NET-Steuerelement - Unbekanntes Server-Tag
Ich habe ein benutzerdefiniertes Steuerelement erstellt, das von einem Literal-Steuerelement erbt. Wenn ich versuche, mein Steuerelement auf einer Seite zu verwenden, wird ein Analysefehler ausgegeben. Ich habe dies zu meiner web.config hinzugefügt
<configuration>
<system.web>
<pages>
<controls>
<add tagPrefix="one" namespace="myApplication.Controls"/>
</controls>
</pages>
</system.web>
</configuration>
Und ich habe dies zu meiner Seite hinzugefügt
<%@ register namespace="myApplication.Controls" tagprefix="one" %>
Keiner von beiden hat das Problem behoben. Ich habe eine externe Assembly mit einigen benutzerdefinierten Steuerelementen, die in meinem Projekt problemlos funktionieren. Als Problemumgehung erwäge ich, mein benutzerdefiniertes Steuerelement in die externe Bibliothek zu verschieben, wenn es keine einfache Lösung gibt.
--bearbeiten
Hier ist der Seitencode.
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SignUp.ascx.cs" Inherits="myApplication.Controls.SignUp" %>
<%@ register namespace="myApplication.Controls" tagprefix="one" %>
<div class="in">
<span>
<one:resourceliteral id="lblFirstname" runat="server" resourcekey="FirstName" resourceresolver="ResourceStringResolver.GetResourceString">
</one:resourceliteral>
</span>
<div>
<pl:textbox id="txtFirstName" runat="server"></pl:textbox>
</div>
</div>
Und hier ist der Code für meine eigentliche Kontrolle
namespace myApplication.Controls
{
public class ResourceLiteral : Literal
{
private ResourceManager rm;
public delegate string dResourceResolver( string label, eLanguage language );
public event dResourceResolver ResourceResolver;
public string ResourceKey { get; set; }
public object DataSource { get; set; }
private eLanguage _Language = eLanguage.ENUS;
public eLanguage Language
{
get { return _Language; }
set { _Language = value; }
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (ResourceResolver != null)
Text = ResourceResolver.Invoke( ResourceKey, _Language );
else
{
if(rm != null)
{
Text = rm.GetString( ResourceKey );
}
}
}
public void LoadDataSource(string resource)
{
rm = new ResourceManager( resource, Assembly.GetExecutingAssembly() );
}
public void LoadDataSource(Type resource)
{
rm = new ResourceManager( resource );
}
}
}