我已經制作了一個自定義控件,它繼承了文字控件。當我嘗試在頁面上使用我的控件時,會引發解析錯誤。我已經添加到了我的web.configASP.NET自定義控件 - 未知服務器標籤
<configuration>
<system.web>
<pages>
<controls>
<add tagPrefix="one" namespace="myApplication.Controls"/>
</controls>
</pages>
</system.web>
</configuration>
而且我將此添加到我的網頁
<%@ register namespace="myApplication.Controls" tagprefix="one" %>
這些都不有固定的問題。我有一個外部程序集,有一些自定義控件,可以在我的項目中正常工作。作爲一種解決方法,如果沒有簡單的解決方案,我正在考慮將自定義控件移動到外部庫中。
- 編輯
以下是頁面代碼。
<%@ 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>
下面是我的實際控制
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);
}
}
}
我們需要你使用實際控制的代碼=) – zincorp 2010-01-05 21:23:28
ascx頁面和代碼在外部程序集中? – jim 2010-01-05 21:59:40