I've made a custom control that inherits from a Literal control. When I try and use my control on a page a parsing error is thrown. I've added this to my web.config
<configuration> <system.web> <pages> <controls> <add tagPrefix="one" namespace="myApplication.Controls"/> </controls> </pages> </system.web> </configuration>
And I've added this to my page
<%@ register namespace="myApplication.Controls" tagprefix="one" %>
Neither of these have fixed the issue. I have a external assembly with some custom controls that work just fine within my project. As a workaround, I'm considering moving my custom control into the external library if there's no simple solution.
--edit
Here's the page code.
<%@ 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>
And here's the code for my actual control
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 ); } } }
When adding a namespace, I've found I also need the assembly. If your assembly is also myApplication
do this in web.config:
<add tagPrefix="one" namespace="myApplication.Controls" assembly="myApplication"/>
Then, just clean and rebuild and it should all work. Once this is in your web.config, you don't need to add it to your page unless you're using this in a control in the same directory, then you'll need the reference at the top of the web form. But, I recommend against using custom server controls in the same directory as user controls.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With