2010-08-17 162 views
1

如果它很重要,這是在ASP.NET MVC2中 - 我該如何做到這一點 - 如何將「id」參數應用於屬性?這下面的語法顯然是行不通的:)方法屬性與方法的參數?

[AuthorizeProject(ProjectId = id)] 
    public ActionResult Browse(int id) 
    { 
     // Stuff 

     return View(); 
    } 
+0

你忘了你問題的另一半了嗎?目前,它根本沒有意義! – leppie 2010-08-17 07:56:27

+0

不是真的 - 我想抓住那個被瀏覽()並將其提供給AuthorizeProject(自定義屬性)的「id」,但我無法做到這一點。 – 2010-08-17 08:01:42

+0

在調用方法之前,您必須這樣做。通常使用url路由器。 – leppie 2010-08-17 08:07:07

回答

1

不是試圖在Attribute構造函數中設置,而是在其中一個事件處理函數中設置ProjectId?您可以通過上下文對象訪問RouteData。

public override void OnAuthorization(AuthorizationContext filterContext) 
    { 
     ProjectId = filterContext.RouteData.Values["id"].ToString(); 
    } 

你只需要確保你使用它有一個id參數,或者你做某種類型的OnAuthorization方法驗證檢查的方法。

+0

非常好 - 謝謝。我做了類似的事情。 – 2010-08-17 10:38:46

0

瀏覽功能的ID參數不在範圍內的屬性進行評估的時刻。你不能這樣做。

0

在編譯時必須知道屬性參數和屬性值,通常是文字。

您無法將方法參數傳遞給屬性。

根據你正在嘗試做什麼,會有不同的方法,但沒有你正在嘗試做什麼的細節很難。