2011-01-19 7 views
0

다른 페이지로 리디렉션되는 ASP.NET 페이지의 특성을 만들려면 어떻게해야합니까?특성 리디렉션

[MyAttribute()] 
public partial class Default : System.Web.UI.Page 
{ 

    protected override void OnLoad(EventArgs e) 
    { 
     base.OnLoad(e); 

    } 
} 

[AttributeUsage(AttributeTargets.All)] 
public class MyAttribute: Attribute 
{ 
    public MyAttribute() 
    { 
     if (// something) 
     { 
      // I need to redirect to some page here 
     } 

    } 
} 
+1

huh? 속성은 아무 것도하지 않습니다. 그것은 "무언가"입니다. 뭔가를 "수행"하는 메소드를 설정하거나, 메소드를 호출하는 속성의 설정자에 코드를 가질 수 있지만, 표현 된대로 질문이 이해되지 않거나 이해할 수 없습니다. 예 : Dog.Breed는 속성이지만 dog.Bark()는 메서드 (또는 액션)입니다. 리디렉션은 또한 작업입니다. 하지만 Dog의 설립자는 완전히 합법적입니다. Breed가 변경되면 달러 가치, 침략 등급 등을 업데이트하는 코드 실행이 가능합니다. – David

답변

0

속성은 그 자체로 리디렉션 할 수 없습니다 - 그것은 단순히 당신이 하나를 정의한 클래스/멤버를 장식 메타 데이터입니다.

리디렉션을 수행하기 위해 해당 메타 데이터를 리플렉션과 함께 사용할 수 있지만 페이지를 검사하고 리디렉션이 발생할 수 있도록 해당 코드를 asp.net 파이프 라인의 어딘가에 배치해야합니다.

0

리디렉션하기 위해 속성을 사용하는 것이 이상한 경험이라는 것에 저는 동의합니다.

정말로 이것을 원한다면 HttpApplication.BeginRequest 이벤트를 살펴보고로드 할 페이지 클래스에 대한 각 요청을 검사하여 원하는 특성이 있는지 확인한 다음 실행할 코드를 작성할 수 있습니다 거기에 리다이렉션.

또는 System.Web.UI.Page에서 상속 한 추상 클래스를 작성할 수도 있습니다 (사이트의 모든 페이지도이 상속을 필요로합니다). OnLoad에 일종의 검사를 입력하십시오. 속성으로 장식되어있다.