2013-10-04 26 views
5

Zauważyłem, że web API nie są uporządkowane w żadnej określonej kolejności (lub przynajmniej według nazwy API) na stronie pomocy. Chciałbym zamówić według nazwy, jeśli to możliwe. Nie można używać OrderBy na ToLookup bardzo dobrze. Oto kod jest wyposażony domyślnie:ASP.NET Web API personalizuj Pomoc

@{ 

// Group APIs by controller 
    ILookup<string, ApiDescription> apiGroups = Model.ToLookup(api => api.ActionDescriptor.ControllerDescriptor.ControllerName); 
} 


<div>      
    <section> 
    @foreach (var group in apiGroups) 
    { 
     @Html.DisplayFor(m => group, "ApiGroup") 
    } 
    </section> 
</div> 

Odpowiedz

4

Zamówienie w pętli:

<div>      
    <section> 
    @foreach (var group in apiGroups.OrderBy(x => x.Key)) 
    { 
     @Html.DisplayFor(m => group, "ApiGroup") 
    } 
    </section> 
</div> 
+0

Bravo, działa dokładnie. Dzięki. – xtrip

0
ILookup<string, ApiDescription> apiGroups = Model.OrderBy(d => d.ActionDescriptor.ControllerDescriptor.ControllerName).ToLookup(api => api.ActionDescriptor.ControllerDescriptor.ControllerName); 
8

Powyższa odpowiedź jest niemal tuż po prostu potrzebował controllername się na końcu.

ILookup<HttpControllerDescriptor, ApiDescription> apiGroups = Model.OrderBy(d => d.ActionDescriptor.ControllerDescriptor.ControllerName).ToLookup(api => api.ActionDescriptor.ControllerDescriptor); 

Przetestowałem to i wszystkie prace teraz.