Ho creato un controllo personalizzato che eredita da un controllo letterale. Quando provo a usare il mio controllo su una pagina, viene generato un errore di analisi. Ho aggiunto questo al mio web.configControllo personalizzato ASP.NET - Tag del server sconosciuto
<configuration>
<system.web>
<pages>
<controls>
<add tagPrefix="one" namespace="myApplication.Controls"/>
</controls>
</pages>
</system.web>
</configuration>
E ho aggiunto questo alla mia pagina
<%@ register namespace="myApplication.Controls" tagprefix="one" %>
Nessuno di questi hanno risolto il problema. Ho un assembly esterno con alcuni controlli personalizzati che funzionano perfettamente nel mio progetto. Come soluzione, sto considerando di spostare il mio controllo personalizzato nella libreria esterna se non c'è una soluzione semplice.
--edit
Ecco il codice della pagina.
<%@ 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>
Ed ecco il codice per il mio vero e proprio controllo
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);
}
}
}
Abbiamo bisogno del codice che stai scrivendo che utilizza il controllo effettivo =) – zincorp
la pagina ascx e il codice sono in un assieme esterno? – jim