2012-10-03 3 views
0

ASP.NET 웹 컨트롤에서 내 사용자 지정 클래스의 인스턴스를 가리키는 사용자 지정 속성을 설정하는 방법을 고민하고 있습니다.태그를 통해 ASP.NET WebControl에서 사용자 지정 개체 속성을 설정하는 방법

샘플 웹 컨트롤 : 뒤에

public class CustomControl : System.Web.UI.WebControls.Panel 
{ 
    public IFactory Factory { get; set; } 
} 

코드 :

public partial class Main : System.Web.UI.Page 
{   
    public IFactory GetFactory { 
    get { return new CustomFactory(); } 
    } 
} 

public class CustomFactory : IFactory {} 

사용자 정의 공장은 뒤에 코드에서 초기화 얻을. 내 마크 업 (코드 뒤에 있음)에서 내 CustomControl의 Factory 속성을 내 코드의 인스턴스로 설정해야합니다. 내가 작동하지 않았다 시도 인라인 코드의 변화 :

<asp:CustomControl ID="MyCustomControl" Factory="<%GetFactory%>" runat="server" /> 
<asp:CustomControl ID="MyCustomControl" Factory="<%=GetFactory%>" runat="server" /> 

사람이 작업을 수행하는 방법을 지원할 수 있습니까?

+0

왜 마크 업에 있어야합니까? –

+0

코드를보다 깨끗하게 유지하려면. – BlueChameleon

+0

좋은 추론을 잘 모르겠습니다. 코드를보다 깨끗하게 유지하려고 시도하면 마크 업을 망칠 수 있습니다. 한 줄의 코드를 추가하는 것이 코드를 어수선하게 만드는 방법을 반드시 보지 못합니다. –

답변

1

제어 태그 마크 업에 태그를 할당 할 수없고 태그 마크 업은 html로 렌더링되며 그렇게 할 논리가 없으므로 html은 GetFactory의 결과를 해석하지 않습니다. 당신이 할 수있는 일 하지 그것을 제어 태그 속성, 마크 업에 경우 설정하는 것입니다, 그러나 다만이 같은 코드 괄호 안의 :

<%MyCustomControl.Factory = this.GetFactory;%> 
+0

이 시도했지만 사용자 지정 컨트롤의 OnInit 팩터 리 속성이 null입니다. 위 코드가 OnPreRender에서 실행됩니까? – BlueChameleon

+0

'Factory' 속성이 null 인 경우, 값을'this.GetFactory'로 설정 했으므로 상관 없습니다. 'null '이 될 수있는 것은 컨트롤입니다. 이를 더 잘 이해하려면 [페이지 수명주기] (http://msdn.microsoft.com/en-us/library/ms178472(v=vs.100) .aspx) (** 렌더링 * * section) – danielQ

+0

내가 말하고자하는 것은 내가 제안한 것을 할 수 있지만, 그 과제는 OnPreRender 이벤트 후에 발생하며 너무 늦다. – BlueChameleon