cách chuyển hướng đến url bên ngoài từ c # controller


78

Tôi đang sử dụng ac # controller làm dịch vụ web.

Trong đó, tôi muốn chuyển hướng người dùng đến một url bên ngoài.

Tôi phải làm nó như thế nào?

Đã thử:

System.Web.HttpContext.Current.Response.Redirect

nhưng nó không hoạt động.


Tôi không nghĩ bạn có thể làm điều đó - đó là vi phạm bảo mật tên miền chéo.
Brian Driscoll

Người tiêu dùng đang sử dụng dịch vụ web như thế nào?
Kirk Woll

Xác định "dưới dạng dịch vụ web". Hành động của bộ điều khiển đang được truy cập như thế nào? Bạn có thể gửi phản hồi chuyển hướng, nhưng nếu phản hồi đó không đi đến yêu cầu trình duyệt web chuẩn thì có thể nó sẽ bị bỏ qua.
David

1
@EladBenda: Tôi không chắc lỗi 324 thực sự nghĩa là gì. Tuy nhiên, tôi nghi ngờ rằng một chuyển hướng JavaScript cũng phải chứa http://phân đoạn của URL.
David

Câu trả lời:


137

Sử dụng phương thức Redirect () của Controller .

public ActionResult YourAction()
{
    // ...
    return Redirect("http://www.example.com");
}

Cập nhật

Bạn không thể trực tiếp thực hiện chuyển hướng phía máy chủ từ phản hồi ajax. Tuy nhiên, bạn có thể trả về một JsonResult với url mới và thực hiện chuyển hướng bằng javascript.

public ActionResult YourAction()
{
    // ...
    return Json(new {url = "http://www.example.com"});
}

$.post("@Url.Action("YourAction")", function(data) {
    window.location = data.url;
});

Tôi đã hạnh phúc quá sớm. vẫn không hoạt động. Tôi đang gọi nó từ ajax POST.
Elad Benda

Bạn đang cố chuyển hướng toàn bộ trang hay chỉ phản hồi ajax?
jrummell

thực sự có cách nào để tạo kiểu ẩn danh như bạn đã làm không? (mới {url: " example.com "})
Elad Benda

Cú pháp sai, xin lỗi. Nó nên được new {url = "example.com"}.
jrummell

1
@dipievil javascript nên được đặt trong tầm nhìn của bạn.
jrummell

14

Thử cái này:

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

4
Đáng chú ý, bạn không thể sử dụng "www.website.com" - bạn phải cung cấp http sự: // hoặc https: // cú pháp
markthewizard1234

2
Cảm ơn bạn @ markthewizard1234 trong số tất cả các câu trả lời mà tôi đã duyệt qua, ghi chú của bạn là một điều khiến tôi cảm thấy thoải mái. Tôi đã không nghĩ về nó vì tôi đang sử dụng một chuyển hướng động đến các trang mạng nội bộ.
LuqJensen

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.