2011-01-19 10 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のセッターでは、Breedが変更された場合、ドル値、侵略度などを更新するコードが実行されるように完全に合法です。 – David

答えて

0

属性はリダイレクトできません。属性は、それを定義したクラス/メンバを装飾する単純なメタデータです。

そのメタデータはリダイレクトを実行するためにリフレクションで使用できますが、そのコードをasp.netパイプラインのどこかに置く必要があります。その結果、ページを検査してリダイレクトを行うことができます。

0

リダイレクトする属性を使用することは奇妙な経験であると私は同意します。

本当にこれを行うには、HttpApplication.BeginRequestイベントを調べて、ページクラスが読み込まれる各リクエストをチェックして、必要な属性があるかどうかを確認するコードを記述するとよいでしょうそこにあなたのリダイレクト。

また、System.Web.UI.Pageから継承する抽象クラスを作成することもできます(サイト内のすべてのページもこれを継承する必要があります)。クラスの場合はOnLoadに何らかのチェックを入れます属性で装飾されています。

関連する問題