2010-08-09 1 views
15

Tôi đang cố gắng thực thi Chuyển hướng từ thuộc tính phương thức. Có vẻ như để làm việc:Chuyển hướng ASP.NET MVC từ thuộc tính

public class MyAttribute: ActionFilterAttribute { 
    [..] 
    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     [..] 
     filterContext.HttpContext.Response.Redirect(urlToRedirectTo, true); 
     [..] 

Vấn đề duy nhất là chuyển hướng được thực hiện sau khi kết thúc của phương pháp nó gắn liền với, trong khi tôi muốn chuyển hướng để ngăn chặn việc thực hiện phương pháp này.

Bất kỳ trợ giúp nào? Cảm ơn

Trả lời

29

Bạn có thể ngăn chặn việc thực thi phương thức hành động bằng cách gán một ActionResult cho filterContext.Result. Ví dụ:

filterContext.Result = new RedirectResult(urlToRedirectTo); 
-2

Bạn cần phải thêm

filterContext.HttpContext.Response.End(); 

EDIT: Đỉnh là sai phía dưới là đúng

này nên làm việc

filterContext.Result = new RedirectResult(UrlToRedirectTo); 

nếu bạn quay lại một ActionResult sau đó nó được thực hiện instaed của hành động chính nó vì vậy điều này nên bỏ qua hành động.

+0

Tôi nghĩ rằng anh ta kết thúc phản hồi bằng cách đặt 'true' làm tham số thứ hai trong phương thức' HttpResponse.Redirect' .. –