2009-01-30 51 views
8

Nếu không tạo ActionLink HtmlHelper của riêng tôi thì có cách nào để buộc bất kỳ ActionLinks nào được hiển thị chữ thường không?Buộc ActionLinks được hiển thị dưới dạng chữ thường

Cập nhật: Kiểm tra các liên kết sau đây cho việc mở rộng RouteCollection thêm LowecaseRoutes [ http://www.makiwa.com/index.php/2008/05/31/lowercase-mvc-route-urls/] [ http://goneale.wordpress.com/2008/12/19/lowercase-route-urls-in-aspnet-mvc/]

Cập nhật - 02/03/2011: Kể từ khi hai liên kết ở trên bây giờ nolonger làm việc, tôi đã thực hiện một bài trong khi trở lại với giải pháp của tôi

http://blog.lukesmith.net/2009/02/01/generating-and-enforcing-that-any-link-and-request-is-lowercase-with-aspnet-mvc/

+0

FYI, các liên kết trong câu hỏi đã chết. – trebormf

Trả lời

10

Cách tốt nhất để xử lý vấn đề này là ở cấp định tuyến. Bắt buộc tất cả các đường dẫn tuyến đường là chữ thường và nó sẽ lan truyền chính xác đến các liên kết hành động của bạn, vv ..

Cách tôi đã giải quyết điều này là tạo một lớp tuyến mới kế thừa Route và chỉ cần ghi đè phương thức GetVirtualPath;

public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values) 
{ 
    var virtualPath = base.GetVirtualPath(requestContext, values); 

    if (virtualPath != null) 
     virtualPath.VirtualPath = virtualPath.VirtualPath.ToLowerInvariant(); 

    return virtualPath; 
} 

Tôi cũng đã tạo một vài phương pháp mở rộng cho RouteCollection để giúp dễ dàng sử dụng lớp tuyến đường mới này.

+1

Cảm ơn. Như một giải pháp nó hoạt động. Tôi đã hy vọng sẽ có một dễ dàng hơn (không cần phải tạo và sử dụng lớp Route của riêng tôi) cách để làm điều này nhưng đã không thể tìm thấy một. –

Các vấn đề liên quan