리터럴 컨트롤에서 상속하는 사용자 지정 컨트롤을 만들었습니다. 페이지에서 내 컨트롤을 사용하려고하면 구문 분석 오류가 발생합니다. 내 Web.config의ASP.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
ascx 페이지와 코드가 외부 어셈블리에 있습니까? – jim