1
我目前正在開發一個ASP.NET MVC項目。從ActionFilter中的filterContext讀取非原始ActionParameters
我想實現一個ActionFilter,它負責所有權權限。用戶只能訪問他在數據庫中與之關聯的實體。
現在我不想在每個控制器中執行此操作。相反,我想使用一個ActionFilter。 我已經可以識別傳入的參數和讀取它們的值用下面的代碼:
控制器
[Validate(ParameterName = "userID", EntityType="User")]
public ActionMethod Edit(int userID){...
ActionFilter
public string ParameterName { get; set; }
public string EntityType { get; set; }
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (EntityType != null && ParameterName != null)
{
Debug.Print("Checking if user has access to the Type \"" + EntityType + "\" with the
ID " + filterContext.ActionParameters[ParameterName]);
...
到目前爲止,這工作正常。但是對於非原始類型(例如User),我只能在filterContext.ActionParameters [ParameterName]中找到NULL值;
見
[HttpPost]
[Validate(ParameterName = "user", EntityType = "User")]
public ActionResult Edit(User user)
{....
我不能找出原因。難道是因爲這是一個HttpPost方法嗎?
這正是我一直在尋找答案!我在同一個類中實現了IAuthorizationFilter和ActionFilterAttribute。現在我分了他們 - 完美的作品!非常感謝 – ckonig 2012-03-12 10:23:29