문제

ASP : 레이블 컨트롤을 기반으로 사용자 정의 복합 컨트롤을 작성하고 있습니다. 라벨의 기본 속성을 피부에 넣을 수 있고 제어에 추가 할 수있는 추가 특성을 만들고 싶습니다.

그러나 테마 디렉토리의 Default.skin 파일에 스킨 정의를 추가하고 SkinID를 지정한 상태에서 내 페이지에 컨트롤을 추가하면 스킨 특성으로 컨트롤을 렌더링하는 방법을 알 수 없습니다.

추가 포인트 :

  • 내 사용자 정의 컨트롤은 별도의 라이브러리/dll로 정의됩니다.
  • 하나의 테스트 속성을 추가하고 [Themable (False)] 속성을 추가했습니다. 그런 다음 해당 속성을 .Skin 파일로 설정했습니다. 페이지를 보려고 할 때 오류가 발생하지 않았으므로 .skin 파일이 적용되지 않거나 스킨 파일의 제어 DEF가 ASPX 페이지.

스킨 파일에서 :

<ctrl:ExtendedLabel SkinId="test" runat="server"
 Expandable="true" Lookup="true" Required="true"
 RequiredCssClass="required" Text="Hello" />

ASPX 페이지에서 :

<ctrl:ExtendedLabel SkinID="test" runat="server"/>

web.config에서 :

<pages>
  <controls>
     <add tagPrefix="ctrl" namespace="MyCompany.WebControls"
          assembly="MyCompany.Web" />
  </controls>
</pages>

스킨 파일에서 해당 속성을 설정할 때 런타임 오류가 발생하는지 테스트하기 위해 컨트롤에 테스트 속성을 추가하여 [Themable (False)]로 표시했습니다. 오류가 없습니다.

페이지 태그에는 스타일 시트 테마 속성이 없습니다. 그러나 나는 스타일 시트 테마 속성을 무시하는 기본 페이지 클래스가 있습니다.

Web.config의 Pages Tag에 StylesheetTheme 속성을 추가하면 스킨 재료가 작동하지 않는 속성을 설정하려는 경우 오류를 얻는 것을 포함하여 작동합니다.

차이점이 뭐야? 기본 페이지 클래스 속성 코드와 함께 작동하도록하려면 어떻게해야합니까?

도움이 되었습니까?

해결책

이것을 시도 할 때 무엇을 얻고 있습니까? 방금 간단한 테스트 프로젝트를 만들었고 웹 사용자 정의 컨트롤에서 사용자 정의 속성을 피할 수있었습니다. 내 단계는 다음과 같습니다.

  • 사용자 정의 컨트롤을 만듭니다.
  • Code-Behind 파일의 클래스 정의에 [Themable (True)] 속성을 추가하십시오.
  • 내 사용자 정의 컨트롤에 레이블 컨트롤을 추가하십시오.
  • "labeltext"라는 속성을 사용자 정의 컨트롤에 추가하여 레이블 컨트롤 텍스트 값을 가져 오거나 설정합니다.
  • web.config에서 System.Web/Pages 섹션에 '테마 = "TestTheme"'을 추가하십시오.
  • web.config에서 '추가'u003Cadd tagPrefix="mine" tagName="Test" src="~/UI/Test.ascx" /> 'System.Web/Pages/Controls 섹션.
  • 내 default.skin 파일에서 '추가'u003Cmine:Test runat="server" LabelText="Test Text" />
  • default.aspx에서 추가u003Cmine:Test id="test1" runat="server" /> '

페이지를 올려 놓고 스킨 파일에만 존재하는 텍스트 "테스트 텍스트"를 참조하십시오.

바라건대 위의 단계 중 하나가 당신이 잊어 버린 것이지만, 그렇지 않다면, 당신이 시도하는 것과보고있는 것에 대한 자세한 내용으로 질문을 업데이트하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top