2009-12-25 41 views
13

Nếu bạn có một tham số mô hình ràng buộc trong một phương thức hành động, làm thế nào bạn có thể nhận được tham số đó trong một bộ lọc hành động?Tham số ASP.NET MVC ActionFilter ràng buộc

[MyActionFilter] 
public ActionResult Edit(Car myCar) 
{ 
    ... 
} 

public class MyActionFilterAttribute : ActionFilterAttribute 
{ 
    public void OnActionExecuted(ActionExecutedContext filterContext) 
    { 
     //I want to access myCar here 
    } 

} 

Có cách nào để lấy myCar mà không phải trải qua các biến Biểu mẫu không?

+0

Đây là một bài viết tuyệt vời giải thích làm thế nào để truy cập ActionParameters cho mục đích ủy quyền: http://www.joe-stevens.com/2010/ 08/19/asp-net-mvc-authorize-attribute-using-action-parameters-với-the-actionfilterattribute/ –

Trả lời

11

Không chắc về OnActionExecuted nhưng bạn có thể làm điều đó trong OnActionExecuting:

public class MyActionFilterAttribute : ActionFilterAttribute 
{ 
    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     // I want to access myCar here 

     if(filterContext.ActionParameters.ContainsKey("myCar")) 
     { 
      var myCar = filterContext.ActionParameters["myCar"] as Car; 

      if(myCar != null) 
      { 
       // You can access myCar here 
      } 
     } 
    } 
} 
+1

Tôi không nghĩ rằng bạn có thể sử dụng ActionFilter ở đó, nó là ActionFilterAttribute. Ngoài ra, bạn đã lấy thuộc tính ActionParameters trên ActionExecutedContext ở đâu? –

+0

Cảm ơn, đó là ActionFilterAttribute - bạn đã đúng. Tôi đã không nhận thấy rằng câu hỏi là về OnActionExecuted. –

+0

Xin cảm ơn các bạn. Đã chỉnh sửa câu hỏi ban đầu của tôi về trạng thái ActionFilterAttribute. Tuy nhiên, – Shlomo

Các vấn đề liên quan