Trong ASP.NET MVC, bạn có thể trả về một ActionResult chuyển hướng khá dễ dàng:
return RedirectToAction("Index");
or
return RedirectToRoute(new { controller = "home", version = Math.Random() * 10 });
Điều này thực sự sẽ cung cấp một chuyển hướng HTTP, thường là tốt. Tuy nhiên, khi sử dụng google phân tích, điều này gây ra sự cố lớn do người giới thiệu ban đầu bị mất nên google không biết bạn đến từ đâu. Điều này làm mất thông tin hữu ích như bất kỳ thuật ngữ công cụ tìm kiếm nào.
Là một lưu ý phụ, phương pháp này có lợi thế là loại bỏ bất kỳ tham số nào có thể đến từ các chiến dịch nhưng vẫn cho phép tôi chụp chúng ở phía máy chủ. Để chúng trong chuỗi truy vấn dẫn đến mọi người đánh dấu trang hoặc twitter hoặc viết blog một liên kết mà họ không nên. Tôi đã thấy điều này nhiều lần khi mọi người có các liên kết twitter đến trang web của chúng tôi có chứa ID chiến dịch.
Dù sao, tôi đang viết một bộ điều khiển 'cổng' cho tất cả các lượt truy cập đến trang web mà tôi có thể chuyển hướng đến các địa điểm khác nhau hoặc các phiên bản thay thế.
Hiện tại tôi quan tâm nhiều hơn đến Google (hơn là đánh dấu ngẫu nhiên) và tôi muốn có thể gửi ai đó truy cập /
vào trang mà họ sẽ nhận được nếu họ truy cập /home/7
, đó là phiên bản 7 của trang chủ.
Giống như tôi đã nói trước đây Nếu tôi làm điều này, tôi sẽ mất khả năng google phân tích người giới thiệu:
return RedirectToAction(new { controller = "home", version = 7 });
Những gì tôi thực sự muốn là một
return ServerTransferAction(new { controller = "home", version = 7 });
cái mà sẽ cho tôi cái nhìn đó mà không cần chuyển hướng phía khách hàng. Tôi không nghĩ rằng một điều như vậy tồn tại mặc dù.
Hiện tại, điều tốt nhất tôi có thể đưa ra là sao chép toàn bộ logic của bộ điều khiển HomeController.Index(..)
trong GatewayController.Index
Hành động của mình . Điều này có nghĩa là tôi phải chuyển 'Views/Home'
vào 'Shared'
để nó có thể truy cập được. Phải có cách tốt hơn??..
if
tuyên bố đơn giản chỉ là một giải pháp quá hấp dẫn.
RouteBase
để bạn có thể đặt if
câu lệnh của mình ở đó thay vì uốn cong mọi thứ về phía sau để nhảy từ bộ điều khiển này sang bộ điều khiển khác?
ServerTransferAction
gì mà bạn đang cố gắng sao chép? Đó có phải là một điều thực tế? (không thể tìm thấy bất kỳ thông tin nào về nó ... cảm ơn vì câu hỏi, btw, câu trả lời dưới đây là tuyệt vời)