如果我的操作具有類似/controller/action/{id}
的路徑,我可以通過執行httpContext.Request.RequestContext.RouteData.Values["id"]
在AuthorizeAttribute中獲取id
。AuthorizeAttribute中的參考通用url參數
相反,如果它是像/controller/action?id={id}
這樣的東西,我可以通過做httpContext.Request.QueryString["id"]
得到它。
如果是來自POST的表單數據,我還需要其他方法。
有沒有一種方法可以說:「無論指定路由如何,都可以通過名稱'id'獲取參數?」
@Xodarap只是出於好奇,爲什麼你需要這一個動作過濾器,如'AuthorizeAttribute '? – bzlm 2011-03-07 21:43:11
@bzlm:例如我想驗證某人正在編輯他們撰寫的帖子。 (所以我需要帖子ID)。 – Xodarap 2011-03-07 21:46:18
@Xodarap看到你的相關問題。對於動作過濾器來說,這是非常非常規的任務,因爲過濾器在設計上並不會忽視動作的細節(包括參數)。這通常會在需要授權的實際操作中執行,爲什麼不這樣做呢?另外,如果你的過濾器確定你不是作者,它應該怎麼做?重定向?返回一個視圖?這真的是一個動作過濾器的工作嗎? – bzlm 2011-03-07 21:51:44