如果它很重要,這是在ASP.NET MVC2中 - 我該如何做到這一點 - 如何將「id」參數應用於屬性?這下面的語法顯然是行不通的:)方法屬性與方法的參數?
[AuthorizeProject(ProjectId = id)]
public ActionResult Browse(int id)
{
// Stuff
return View();
}
如果它很重要,這是在ASP.NET MVC2中 - 我該如何做到這一點 - 如何將「id」參數應用於屬性?這下面的語法顯然是行不通的:)方法屬性與方法的參數?
[AuthorizeProject(ProjectId = id)]
public ActionResult Browse(int id)
{
// Stuff
return View();
}
不是試圖在Attribute構造函數中設置,而是在其中一個事件處理函數中設置ProjectId?您可以通過上下文對象訪問RouteData。
public override void OnAuthorization(AuthorizationContext filterContext)
{
ProjectId = filterContext.RouteData.Values["id"].ToString();
}
你只需要確保你使用它有一個id參數,或者你做某種類型的OnAuthorization方法驗證檢查的方法。
非常好 - 謝謝。我做了類似的事情。 – 2010-08-17 10:38:46
瀏覽功能的ID參數不在範圍內的屬性進行評估的時刻。你不能這樣做。
在編譯時必須知道屬性參數和屬性值,通常是文字。
您無法將方法參數傳遞給屬性。
根據你正在嘗試做什麼,會有不同的方法,但沒有你正在嘗試做什麼的細節很難。
你忘了你問題的另一半了嗎?目前,它根本沒有意義! – leppie 2010-08-17 07:56:27
不是真的 - 我想抓住那個被瀏覽()並將其提供給AuthorizeProject(自定義屬性)的「id」,但我無法做到這一點。 – 2010-08-17 08:01:42
在調用方法之前,您必須這樣做。通常使用url路由器。 – leppie 2010-08-17 08:07:07