Tôi có một ứng dụng web bằng cách sử dụng MVC 2 Preview 2 và sau khi tất cả các tuyến đường được đăng ký, tôi cần phải bọc mỗi tuyến đường trong một trang trí tiếp tục xuống chuỗi. Vấn đề là, làm như vậy phá vỡ định tuyến. Những gì kết thúc lên xảy ra là phương pháp GetVirtualPath sẽ phù hợp sai cho các khu vực khác trong ứng dụng (Tôi đang sử dụng các khu vực đơn dự án). Nó không quan trọng nếu trang trí làm bất cứ điều gì hữu ích hay không. Sử dụng passthrough sau đây là tất cả những gì bạn cần để phá vỡ nó.Tại sao tuyến đường trang trí phá vỡ định tuyến trong ASP.NET MVC 2?
public class RouteDecorator: RouteBase
{
readonly RouteBase _route;
public RouteDecorator(RouteBase route)
{
_route = route;
}
public override RouteData GetRouteData(HttpContextBase context)
{
return _route.GetRouteData(context);
}
public override VirtualPathData GetVirtualPath(RequestContext context, RouteValueDictionary values)
{
return _route.GetVirtualPath(context, values);
}
}
Tôi chỉ định trang trí theo một vòng lặp đơn giản sau khi tất cả các tuyến đường được đăng ký.
var routes = RouteTable.Routes;
for (var i = 0; i < routes.Count; i++)
{
routes[i] = new RouteDecorator(routes[i]);
}
Làm cách nào để chèn trang trí một cách an toàn mà không phá vỡ các tuyến đường và khu vực?
Tôi có giải pháp sinh sản có sẵn to download here. Trong bản tái tạo, trang trí tuyến đường được nhận xét. Nhận xét nó trở lại sẽ phá vỡ định tuyến và dữ liệu định tuyến của vùng giả đầu tiên sẽ khớp với các liên kết thông thường sẽ khớp chính xác với vùng tên tương ứng.
Cảm ơn bạn đã nỗ lực. Việc triển khai IRouteWithArea không sửa lỗi blanche của vấn đề nhưng nó có thể đưa tôi theo một hướng mới. Cảm ơn bạn. –
Trình trang trí xuất hiện để kết thúc gói tuyến đường nhiều lần. Tôi đã chỉnh sửa câu trả lời của tôi cung cấp mã để thực hiện một giải pháp làm việc, mặc dù tôi lý tưởng muốn tìm hiểu lý do tại sao điều này xảy ra vì nó khá lạ. –
Điều này chắc chắn là câu trả lời cho vấn đề. Tôi không bắt được vấn đề trang trí sinh sản. Đây là một số hành vi kỳ lạ, hoặc, hành vi mong đợi với một sự thiếu hiểu biết tại sao nó xảy ra. –