2011-10-28 4 views
4

CompositeDataBoundControl에서 상속 한 ASP 페이지에 대한 사용자 지정 웹 컨트롤을 만들고 있습니다. 이 필요한의 컨트롤 정의에 public 속성이 있습니다. 사용자가 ASP 페이지의 컨트롤 정의에이 속성을 제공하지 않으면 중단되고 예외가 발생합니다. 사용자가 컨트롤의 'runat'속성을 제공하는 것을 잊어 버렸을 때와 비슷한 경고를 컴파일러에서 발생 시키길 원합니다.사용자 지정 ASP .NET 컨트롤의 필수 속성

"유효성 검사 (ASP.Net) : 요소 'asp : Button'에 필수 특성 'runat'이 없습니다."

public class MyControl : CompositeDataBoundControl, IPostBackEventHandler 
{ 
    private string _someString; 
    public string SomeString 
    { 
     get { return _someString; } 
     set { _someString = value; } 
    } 

    // Other Control Properties, Functions, Events, etc. 
} 

내가 "SomeString는"필수 등록하고 내 페이지를 빌드 할 때 컴파일러 경고를 던져 원하는 : 여기

처럼 내 코드가 어떻게 생겼는지 기본적으로.

그래서 같은 건물 위의 필수 속성을 퍼팅 시도했다 :

[Required] 
public string SomeString 
{ 
    get { return _someString; } 
    set { _someString = value; } 
} 

하지만이 나던 일을 보인다.

어떻게 이러한 컴파일러 메시지를 생성 할 수 있습니까?

+1

가능 중복 된 [I 사용자 지정 .NET 웹 컨트롤에 필요한 속성을 지정하려면 어떻게합니까?] (http://stackoverflow.com/questions/1106134/how-do-i-specify- a-required-attribute-in-a-custom-net-web-control) –

+1

runnat이 특별한 경우라는 것을 알 것입니다. 그것은 aspnet 런타임에 신호로서 컨트롤로 렌더링 될 마크 업이고 컨트롤은 페이지 클래스에 (또는 컨테이너가 무엇이든지) 필드로 추가되어야한다는 IDE에 신호입니다. 'btnmybutton.runnat'이 (가) 코드 뒤에 존재하지 않는 속성입니다. –

+0

그래서 내가 원하는 것을 성취 할 수있는 방법이 있습니까? – user1018669

답변

0

매우 간단합니다. 페이지로드시 속성에 값이 있는지 여부를 확인할 수 있습니다. 속성 유형에 따라 Null 또는 빈 대소 문자를 확인할 수 있습니다. 내가 Page_Load 이벤트에서이

private string _someString; 
    public string SomeString 
    { 
     get { return _someString; } 
     set { _someString = value; } 
    } 

이있는 경우 내가

if(_someString != null && _someString != "") 
{ 
    String message = "Missing someString property"; 
    isAllPropertySet = false; //This is boolean variable that will decide whether any property is not left un-initialised 
} 

경우 모든 최고를 확인합니다처럼.

마지막

관련 문제