Tôi đang cố gắng tạo URI trông giống như thế này: http://hostname/mobile/en/controller/action
cho điện thoại di động HOẶC http://hostname/en/controller/action
cho máy tính để bàn (không di động).Tuyến đường luôn đi tới bản đồ đầu tiên
My Route bảng hiện trông như thế này (Global.asax.cs)
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Mobile", // Route name
"mobile/{language}/{controller}/{action}/{id}", // URL with parameters
new { language = "en", controller = "Route", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new { language = @"en|us" } // validation
);
routes.MapRoute(
"Default", // Route name
"{language}/{controller}/{action}/{id}", // URL with parameters
new { language = "en", controller = "Route", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new { language = @"en|us" } // validation
);
Vấn đề xảy ra khi tôi cố gắng để làm một return RedirectToAction("Add", "User");
Nó luôn luôn chuyển hướng trình duyệt máy tính để bàn /en/User/List
-/mobile/en/User/Add
khi tôi muốn nó để đi đến /en/User/Add
. Phiên bản di động hoạt động chính xác nhưng tôi tin rằng điều này là do tuyến đường "Di động" đầu tiên luôn được xem là tuyến phù hợp ngay cả khi nó không có/di động/lúc khởi động.
Tôi đang cố gắng sử dụng cùng một bộ điều khiển cho cả hai phiên bản nhưng bị kẹt ở đó luôn chuyển hướng đến tuyến đường Di động. Điều này có nghĩa là RedirectToRoute
không hoàn hảo vì tôi muốn các tuyến động.
Cảm ơn sự giúp đỡ của bạn.
Cảm ơn René giống như những gì tôi đã hy vọng làm. Bạn có thể cho tôi biết nơi tốt nhất là đặt phương pháp mở rộng không? – Adrian
Đặt lớp tĩnh ControllerExtensions bất cứ nơi nào bạn muốn. Và trong bộ điều khiển bạn muốn sử dụng chuyển hướng, hãy đảm bảo bao gồm không gian tên mà lớp tiện ích mở rộng. Sau đó, bất kỳ vị trí nào trong bộ điều khiển của bạn, bạn có thể sử dụng this.CusomRedirectToRoute ("Home", "Index", routeValues); Bạn cũng có thể thêm một phương thức tiện ích mở rộng khác có giá trị là routeValues nếu bạn muốn. –
Nếu bạn muốn dọn dẹp nó, phần sau của bình luận của tôi có thể được thay thế bởi hệ thống gọn gàng và sạch sẽ để lấy tên của tuyến đường như được mô tả trong bài đăng này: http://stackoverflow.com/questions/363211/how -can-i-get-the-route-tên-trong-bộ điều khiển-trong-asp-net-mvc –