문제

ASP.NET 페이지에 속성을 추가하는 데 부끄러워하는 경향이있었습니다. 그것은 나에게 좋은 생각처럼 보이지 않았다. 그러나 최근에는 몇 가지 샘플 응용 프로그램에서 관행이 사용되는 것을 보았습니다. 페이지에 사용자 정의 속성을 추가하는 것에 대한 혐오가 부적절하지 않습니까?

도움이 되었습니까?

해결책

기억해야 할 속성에 대한 것은 전체 페이지 수명주기에 대해 지속된다는 것입니다. 이것은 그것들을 매우 유용하게 만들고 (수명주기 초기에 속성을 설정하고 나중에 유효합니다) 위험합니다 (설정하기 전에 속성에 쉽게 액세스 할 수 있거나 다른 수명주기 단계가 당신에게 변경되지 않음을 깨닫지 못합니다).

내가 큰 효과에 사용되는 속성을 본 한 가지 영역은 쿼리 문자열과 세션을 포장하는 좋은 유형 안전 방법입니다. 예상되는 각 쿼리 문자열 또는 세션 값에 대한 속성을 정의하면 향후 개발자에게 예상 및 사용 가능한 것을 매우 명확하게합니다.

또 다른 일반적인 용도는 ViewState 항목을 래핑하는 것입니다. 대부분의 샘플은 ViewState가 켜져 있다고 가정하기 때문에 이것이 샘플에서 볼 수있는 곳을 기대합니다.

다른 팁

서버 측 페이지에서 코드를 정리하기 위해 속성을 사용하는 데 아무런 문제가 없습니다. 나는 속성을 사용하여 세션 상태에 액세스하거나 상태 정보를 보는 것을 좋아합니다.이 방법으로 데이터에 액세스하는 방법을 수정하면 한 장소 만 변경합니다.

ASP.NET은 생성자 기반 주입을 지원하지 않습니다. 이것은 ASP.NET 속성을 사용하려는 명확한 시나리오입니다 (속성 기반 주입을 사용할 수 있으므로).

업데이트 1 : 여기에 비슷한 시나리오가 있지만 컨트롤 용. ASP.NET 웹 양식과의 종속성 주입을 사용하는 방법

Update 2: ViewState 또는 Query String을 래프하는 데 사용해도 괜찮습니다. 코드를 남용하고 싶지 않기 때문에주의 깊게 살펴 보겠습니다. CodeBehind에서 랩핑 속성 중 하나를 많이 사용하고 있다면 CodeBehind에 코드가 너무 많을 것입니다. 이런 식으로 살펴보면 해당 속성과 관련 될 수있는 반복 주조/구문 분석을 피하는 부작용이 있습니다.

페이지의 속성에는 아무런 문제가 없습니다. 페이지는 외부 코드로 객체로 거의 조작되지 않기 때문에 홀수를 볼 수 있지만 수행 할 수 있습니다. 이를 감안할 때, 페이지의 대부분의 속성은 비공개로 표시 될 수 있습니다. 모든 것들과 마찬가지로 예외가 있습니다.

내 페이지의 속성에 대한 가장 큰 용도 중 하나는 ViewState 값을 래핑 할 때입니다.

protected string TaskName
{
    get { return (string)ViewState["TaskName"] ?? string.Empty; }
    set { ViewState["TaskName"] = value; }
}

이 경우, 나는 속성을 "보호 된"것으로 표시하여 마크 업에서 액세스 할 수 있습니다.

왜 나쁜가요? 속성은 실제로 메소드 일뿐입니다. 항상 페이지에 메소드를 추가합니다.

ASP.NET 페이지의 속성을 사용하여 세션, ViewState 및 QueryString에 액세스합니다. 코드를 적게 쓰고 가독성을 높이게합니다.

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