2009-10-10 36 views
122

Tôi đang cố gắng chuyển hướng đến url bên ngoài từ một phương thức hành động nhưng không thể làm cho nó hoạt động. Ai có thể làm sáng tỏ một số lỗi của tôi không?Chuyển hướng đến URI bên ngoài từ bộ điều khiển ASP.NET MVC

public void ID(string id) 
    { 
     string url = string.Empty; 
     switch (id) 
     { 
      case "DB2FCB11-579F-4DA2-A68C-A6495B9BAAB5": 

       url = "http://www.somesite.com"; 
       break; 
     } 
     Response.Redirect(url, true); 
    } 

Cảm ơn, Chris

+1

Lỗi của bạn là gì? Hay triệu chứng? Điều này có đi đâu không? –

Trả lời

263

Nếu bạn đang nói về ASP.NET MVC thì bạn nên có một phương pháp điều khiển trả về như sau:

return Redirect("http://www.google.com"); 

Nếu không chúng ta cần biết thêm về lỗi bạn đang nhận được trong chuyển hướng. Tôi sẽ bước qua để đảm bảo url không trống.

+5

Tùy chọn, bạn có thể làm điều này thay thế: trả về RedirectResult mới ("yourURL", true); gần như chính xác như nhau, nhưng cung cấp cho bạn tham số ở cuối để cho biết đó là chuyển hướng vĩnh viễn hay không (HTTP 301 so với cái gì khác, 307 có thể?) – ctb

+0

Điều này sử dụng mã phản hồi 302? https://en.wikipedia.org/wiki/HTTP_302 –

+0

@ Mr.Pichler Nhiều khả năng 302, nhưng bạn luôn có thể kiểm tra với Fiddler. –

8

Sử dụng JavaScript

public ActionResult Index() 
{ 
    return Content("<script>window.location = 'http://www.example.com';</script>"); 
} 

Lưu ý: Như @ Jeremy Ray Brown cho biết, đây không phải là lựa chọn tốt nhất nhưng bạn có thể thấy hữu ích trong một số tình huống.

Hy vọng điều này sẽ hữu ích.

+1

Thứ gì đó như thế này có thể hoạt động, nhưng một bộ điều khiển quyết định hành động nào cần thực hiện. Bạn không cần một kịch bản để tham gia. –

+4

Tin hay không, một cái gì đó như cách tiếp cận này đã giúp tôi. Chúng tôi có một ứng dụng ASP.NET MVC/AngularJS lai với nhiều mã mẫu web cũ hơn trên toàn bộ địa điểm. Tôi đã sử dụng một cái gì đó tương tự như chuyển hướng đến một URL sử dụng định tuyến góc. Bởi vì định tuyến góc theo sau một dấu # trong URL, nó chỉ được nhận dạng phía máy khách, do đó không thể sử dụng chuyển hướng cho các URL như vậy. – thesentiment

+0

Nó không phải là "cách tốt nhất", nhưng hoạt động tốt. – TNT

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