2009-01-30 12 views
8

Kendi ActionLink'imi oluşturmadan HtmlHelper, herhangi bir ActionLinks'in küçük harfe dönüştürülmesini sağlamanın bir yolu var mı?Zorunlu ActionLinks az işlem görecek

Güncelleme: Kontrol dışarı LowecaseRoutes [ http://www.makiwa.com/index.php/2008/05/31/lowercase-mvc-route-urls/] eklemek RouteCollection uzatılması için aşağıdaki bağlantıları [ http://goneale.wordpress.com/2008/12/19/lowercase-route-urls-in-aspnet-mvc/]

Güncelleme - 02.03.2011: İki adet bağlantı yana Şu anda nolonger iş, ben bir çözüm geri bir süre sonra benim çözüm ile yaptım

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

+0

FYI, sorudaki bağlantılar kesildi. – trebormf

cevap

10

Bunu işlemenin en iyi yolu, yönlendirme düzeyindedir. Küçük için tüm rota yolları zorla ve düzgün eylem vb linkleri

için bu çözdük şekilde yaymak olacaktır, Route devralır ve basitçe GetVirtualPath yöntemini geçersiz kılan yeni bir güzergah sınıf oluşturmak için;

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

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

    return virtualPath; 
} 

Ben de kolayca bu yeni rota sınıfını kullanmak yapmak RouteCollection için birkaç uzatma yöntemleri oluşturduk.

+1

Teşekkürler. Bir çözüm olarak çalışır. Bunu yapmanın daha kolay olacağını (kendi Rota sınıfımı oluşturmam ve kullanmam gerekmeyecek) umuyordum ama bunu bulamadım. –