2011-02-02 4 views
4

공용 속성이 string[] foo 인 사용자 정의 컨트롤을 만들었습니다.비 기본 값을 사용자 정의 컨트롤 속성에 지정하고 있습니까?

실제 마크 업에서 이것을 할당 할 수 있습니까?

프로젝트 유형은 ASP.NET webforms/web application입니다.

Ive는 다음 구문을 시도했지만 작동하지 않습니다. (컴파일되지만 값은 할당되지 않습니다.)

<abc:MyControl runat="server" foo='<%# new string[]{"Hello"} %>' /> 

답변

0

난 내가 같은 것을 할 배열 정상적으로 전에 그런 건 본 적이 없다 :

<abc:MyControl runat="server" foo="This,Is,A,Test" /> 

public string foo { 
    get; 
    set; 
} 

public string[] foos { 
    get { return foo.Split(','); } 
    //set; if needed 
} 
2

당신은 관심을 PersistenceMode(PersistenceMode.InnerProperty)을 찾을 수 있습니다. PersistenceMode 속성을 사용하면 중첩 된 속성이있는 속성을 만들 수 있습니다. 이 경우 요소는 문자열 만 저장할 수 있기 때문에 aspx 코드는 속성이 아닌 중첩 요소를 사용합니다. 데이터 바인딩 구문은 단지 속기

<abc:MyControl runat="server" > 
    <foo> 
     <element value="1" /> 
     <element value="2" /> 
    </foo> 
</abc:MyControl> 
2

: 그 상황에서

, 당신은 같은 일을하고있을 것입니다.

<abc:MyControl runat="server" ID="control1" foo='<%# new string[]{"Hello"} %>' /> 

는 그런 식으로 시도하고 작동하는지 확인

<abc:MyControl runat="server" ID="control1" OnDatabinding="Databind_control1" /> 


protected void Databind_control1(object sender, EventArgs e) 
{ 
    ((MyControl) sender).foo = new string[]{"Hello"}; 
} 

을위한 속기이다.

+0

흥미 롭습니다. 내가 체크 havent,하지만 DataBinding 이벤트는 컨트롤이 특정 인터페이스를 구현 한 후에 만 ​​호출됩니다 가정합니까? – maxp

+0

@maxp : 모든 컨트롤에는 DataBinding 이벤트가 있습니다. –

관련 문제