2011-01-19 67 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

呵呵?一個屬性不會「做」任何事情。它「是」某種東西。你可以設置一個方法來「做」某件事,或者你可以在一個屬性的setter中擁有調用方法的代碼,但是如果它的措辭不是這個問題,或者我沒有得到它。例如:Dog.Breed是一個屬性,但dog.Bark()是方法(或動作)。重定向也是一項行動。然而,在Dog.Breed的制定者中這是完全合法的,以便如果品種改變,代碼運行會更新美元值,攻擊評級等。 – David 2011-01-19 18:00:38

回答

0

的屬性本身不能重定向 - 它僅僅是裝飾你這樣來定義一個類/成員的元數據。

那元數據可以與反思,以執行重定向可以使用,但你需要把這些代碼某處asp.net管道內,使頁面可以檢查並可能發生重定向。

0

我與大家一樣,使用屬性重定向同意是一個奇怪的經驗。

如果你真的想這樣做,你應該看看HttpApplication.BeginRequest事件,你可能會寫一些代碼檢查每個請求加載的頁面類是否有你想要的屬性,然後執行你在那裏重定向。

另外,你也許可以編寫一個從System.Web.UI.Page繼承的抽象類(你的站點中的所有頁面也需要繼承這個),並且在OnLoad中加入某種檢查,如果類用屬性裝飾。