Có thể bỏ qua toàn bộ phương thức hành động và trả lại ActionResult
cụ thể khi một điều kiện nhất định được đáp ứng trong OnActionExecuting
không?Làm thế nào để bỏ qua việc thực hiện hành động từ một ActionFilter?
Trả lời
Bạn có thể sử dụng filterContext.Result cho việc này. Nó sẽ giống như sau:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//Check your condition here
if (true)
{
//Create your result
filterContext.Result = new EmptyResult();
}
else
base.OnActionExecuting(filterContext);
}
Xem mẫu tải xuống và bài viết MSDN Filtering in ASP.NET MVC của tôi.
Bạn có thể hủy thực thi bộ lọc trong các phương pháp OnActionExecuting
và OnResultExecuting
bằng cách đặt thuộc tính Result
thành giá trị không null.
Bất kỳ bộ lọc nào đang chờ xử lý OnActionExecuted
và OnActionExecuting
sẽ không được gọi và người gọi sẽ không gọi phương thức OnActionExecuted
cho bộ lọc bị hủy hoặc cho bộ lọc đang chờ xử lý.
Bộ lọc OnActionExecuted
cho các bộ lọc trước đó sẽ chạy. Tất cả các bộ lọc OnResultExecutingand
OnResultExecuted
sẽ chạy.
Các mã sau đây từ mẫu cho thấy làm thế nào để trả về một cụ ActionResult
khi một điều kiện nhất định được đáp ứng trong OnActionExecuting
:
if (filterContext.RouteData.Values.ContainsValue("Cancel"))
{
filterContext.Result = new RedirectResult("~/Home/Index");
Trace.WriteLine(" Redirecting from Simple filter to /Home/Index");
}
Cần lưu ý rằng nếu bạn có nhiều bộ lọc và thứ tự bộ lọc quan trọng, bạn nên chỉ định tham số "Đặt hàng" khi đăng ký bộ lọc để bạn có thể kiểm soát thứ tự thực hiện khi Rick đã nêu chi tiết về kết quả filterContext.Result thuộc tính hoạt động. –
Nick điểm tốt - nhưng xem phần Bộ lọc thứ tự của tôi - thuộc tính thứ tự chỉ áp dụng cho các bộ lọc trong cùng một lớp. Auth luôn chạy đầu tiên, ngoại lệ, cuối cùng. – RickAndMSFT
Bạn có thể sử dụng đoạn mã sau đây.
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
...
if (needToRedirect) //your condition here
{
...
filterContext.Result = new RedirectToAction(string action, string controller)
return;
}
...
}
RedirectToAction sẽ chuyển hướng bạn hành động cụ thể dựa trên điều kiện.
RedirectToAction là một phương thức (ít nhất là trong MVC5), do đó bạn không thể new() nó. – rumblefx0
- 1. Làm thế nào hủy bỏ việc thực hiện một SwingWorker?
- 2. Làm thế nào để bỏ qua việc thực hiện một phương thức cha mẹ để thực hiện phương thức ông bà?
- 3. Làm thế nào để thực hiện hành động sau DialogFragment nút tích cực nhấp
- 4. Làm thế nào để bỏ qua một dòng từ thực hiện trong windbg mỗi khi nó chạm?
- 5. Python: Làm thế nào để bỏ qua một ngoại lệ và tiến hành?
- 6. Làm thế nào để thực hiện việc tải lên thông qua s3 trên Heroku với node.js?
- 7. Làm thế nào để vượt qua lập luận để hành động trong UIGestureRecognizer initWithTarget hành động
- 8. Tôi làm cách nào để UnitTest một ActionFilter tùy chỉnh?
- 9. Làm thế nào để thực hiện một hoạt động hợp nhất Git bỏ qua những thay đổi giống hệt nhau được thực hiện cho cả hai nhánh?
- 10. Làm thế nào để phát hiện hệ điều hành trong một tập tin thực hiện?
- 11. làm thế nào để thực hiện một stop setInterval sau một thời gian hoặc sau một số hành động?
- 12. Làm thế nào để bỏ qua một bối cảnh
- 13. twitter bootstrap - làm thế nào để bỏ qua một dòng?
- 14. Làm thế nào để làm cho flyspell bỏ qua một số từ theo ngữ cảnh?
- 15. Bỏ qua các hình thức Xác thực tự động chuyển hướng để đăng nhập, Làm thế nào để?
- 16. Làm cách nào để truy cập vào ModelState từ một ActionFilter?
- 17. Làm thế nào để bỏ chọn một UITableViewCell sau khi bạn đã thực hiện một số hành động bằng cách sử dụng didSelectRowAtIndexPath?
- 18. UIRefreshControl - Làm cách nào để thực hiện hành động làm mới sau khi chạm được phát hành?
- 19. Nhận hành động thực hiện trong HttpModule
- 20. Làm thế nào để thực hiện một yêu cầu chunked qua nginx
- 21. Làm thế nào để loại bỏ cây làm việc từ một kho Git
- 22. Xác thực MVC bỏ qua cho một bộ điều khiển/hành động đơn
- 23. Làm thế nào để trì hoãn việc gọi một hoạt động từ một hoạt động khác?
- 24. Làm thế nào để thực hiện một sự kiện hủy bỏ trong C#
- 25. Làm thế nào để thực hiện một hành động liên kết như một đầu vào tập tin
- 26. Làm thế nào tôi có thể thực sự làm Subversion bỏ qua một thư mục?
- 27. Làm thế nào để làm cho MainThread chờ đợi cho đến khi một số hành động async được thực hiện?
- 28. Làm thế nào để thực hiện onclick tự động thông qua chức năng onload
- 29. Làm cách nào để thực hiện một hành động mỗi 5 kết quả?
- 30. Làm cách nào để bỏ qua Xác thực w/find_or_create_by_?
Tại sao bạn bỏ qua base.OnActionExecuting khi điều kiện của bạn là đúng? Trong trường hợp của tôi, tôi cần điều đó để chạy trước khi tôi có thể thiết lập kết quả. – xr280xr