Tôi muốn sử dụng một RedirectToRouteResult để chuyển hướng đến một url như/users/4 # Summary. Sử dụng ASP.NET MVC 1.0, tôi đã không thể tìm thấy một cách để làm điều đó - tôi đã bỏ lỡ nó?Làm cách nào để thêm thông số cho neo/băm vào RedirectToRouteResult?
Trả lời
Bạn nên xây dựng đúng tuyến đường của bạn trong bảng định tuyến. Eg .:
routes.MapRoute("MyRoute" ,"{controler}/{id}#{detail}" ,new { controller = "users", action = "index", id = (string)null, detail = "Summary" });
Tôi làm điều tương tự trên trang web của tôi here. Nhưng nó không phải với RedirectToRouteResult
. RedirectToRouteResult
không hỗ trợ bao gồm phần neo vào url.
Bạn cần tự xây dựng liên kết và thậm chí cả logic để xử lý việc xử lý phần neo - như tôi đã làm. Ứng dụng của tôi cố gắng sao chép chức năng tương tự như chức năng của chế độ xem thư viện ảnh Facebook. Mỗi liên kết đến một trang khác nhau phải có một url duy nhất, vì vậy tôi sử dụng phần neo này. Nhưng coz nó không dịch trực tiếp đến một lộ trình tôi phải phân tích cú pháp phần neo của url theo cách thủ công trên trang và sử dụng ajax để tải nội dung thích hợp. Đây là những gì tôi muốn vì vậy nó hoạt động cho tôi.
Tải source code of MVC và kiểm tra như thế nào RedirectToRouteResult làm việc
Có thể có những cách tốt hơn nhưng một thừa kế đơn giản của RedirectToRouteResult và ghi đè của ExecuteResult để cho phép một bộ phận neo buộc phải sửa chữa vấn đề
Tôi đã có một vấn đề tương tự, hãy xem ở đây:
Linking to location on page (#id) through ASP.NET MVC mechanisms?
tôi đã kết thúc việc tạo ra một lộ trình sử dụng #.
UrlHelper.GenerateUrl bao gồm thông số phân đoạn. Tôi tạo ra một phương pháp khuyến nông
public static string Action(this UrlHelper url, string actionName, string controllerName, string fragment, object routeValues)
{
return UrlHelper.GenerateUrl(
routeName: null,
actionName: actionName,
controllerName: controllerName,
routeValues: new System.Web.Routing.RouteValueDictionary(routeValues),
fragment: fragment,
protocol: null,
hostName: null,
routeCollection: url.RouteCollection,
requestContext: url.RequestContext,
includeImplicitMvcValues: true /*helps fill in the nulls above*/
);
}
Sau đó, tôi tạo ra một lớp RedirectToFragmentResult
public class RedirectToFragmentResult: RedirectResult
{
public UrlHelper Url {get;set;}
public string Action { get; set; }
public string Controller { get; set; }
public string Fragment { get; set; }
public object RouteValues { get; set; }
public RedirectToFragmentResult(UrlHelper url, string action, string controller, string fragment, object routeValues)
:base(url.Action(action, controller, fragment, routeValues))
{
Url = url;
Action = action;
Controller = controller;
Fragment = fragment;
RouteValues = routeValues;
}
}
Sau đó, bạn chỉ có thể tạo ra một RouteValueDictionary mới (result.RouteValues) trong thử nghiệm đơn vị của bạn để kiểm tra nó theo cách bạn làm với một RedirectToRouteResult.
Cảm ơn @ Joel Điều này dường như làm việc rất tốt. Không cần thiết cho thuộc tính URL cục bộ (điều này sẽ tạo ra một cảnh báo 'ẩn'). Tôi đã thử nghiệm với các dòng được gỡ bỏ: 'public UrlHelper Url {get; thiết lập;} 'và' Url = url; '- bất kỳ lý do nào tại sao điều này là có? – Chris
Tôi đã sử dụng tính năng này để gỡ lỗi tiện lợi, vì vậy tôi có thể truy cập urlhelper từ cửa sổ xem, nhưng bạn chính xác cơ sở đó (url.Có nghĩa là thời gian thực cuối cùng được sử dụng và không cần thiết để thử nghiệm) –
- 1. Làm cách nào để thêm thông số vào URL?
- 2. Làm cách nào để thêm thông số bổ sung vào biểu mẫu button_to?
- 3. Làm cách nào để thêm thông số url vào url hiện tại?
- 4. Làm cách nào để thêm thông số vào liên kết đến URL bên ngoài?
- 5. Làm cách nào để thêm số hàng vào lưới ExtJS?
- 6. Asp.net thêm thông số vào chuỗi url
- 7. Làm cách nào để thêm thông số để xóa liên kết?
- 8. RedirectToRouteResult hoạt động như thế nào?
- 9. Làm cách nào để thêm thông số được mã hóa vào tệp web.config để nó hiển thị trong SetParameters.xml?
- 10. Làm cách nào để thêm thẻ thông minh vào thành phần .NET của tôi?
- 11. linux shell thêm vào thông số biến chỉ huy
- 12. Làm cách nào để thêm số không được đệm vào một số trong Java?
- 13. Grails - Thêm thông số vào bản đồ params
- 14. Tôi làm cách nào để thêm nút vào cửa sổ thông tin của người đánh dấu?
- 15. Làm cách nào để thêm các mục vào gtk.ComboBox được tạo thông qua glade khi chạy?
- 16. Làm cách nào để thêm thông số đầu ra vào một hàm mà không vi phạm mã hiện tại?
- 17. Làm cách nào để thêm UIApplicationDelegate vào cuối chuỗi UIResponder?
- 18. Đơn vị kiểm tra RedirectToRouteResult
- 19. Làm cách nào để thêm các tham số bổ sung vào trình xử lý ExtJS?
- 20. Thêm thông số chuỗi truy vấn vào link_to
- 21. Làm cách nào để thêm spinner vào ActionBar?
- 22. Làm cách nào để thêm giá trị boolean vào NSDictionary?
- 23. Làm cách nào để thêm cột được tính vào Bảng?
- 24. Làm cách nào để thêm thông tin đóng dấu thời gian vào các tạo tác Maven?
- 25. Làm cách nào để thêm phông chữ vào netbeans?
- 26. Làm thế nào để loại bỏ ràng buộc đầu vào được thêm vào thông qua CommandManager.RegisterClassInputBinding?
- 27. Làm cách nào để chuyển thông số qua nút gửi?
- 28. Làm cách nào để thêm vào mỗi hàng trong MySQL?
- 29. Làm cách nào để thêm thuộc tính vào tệp topojson?
- 30. Làm cách nào để lấy thông tin Chứng chỉ SSL cho trang * hiện tại * trong Firefox Thêm Vào
Chỉ vậy thôi; Tôi biết tôi có thể tự xây dựng một URL, nhưng tôi muốn hưởng lợi từ các kiểm tra mạnh mẽ trong các bài kiểm tra đơn vị của tôi khi khẳng định, ví dụ. –
tôi hiểu. tôi nghĩ rằng bạn đang ra khỏi may mắn sau đó –