2010-08-18 26 views
5

Ho bisogno di impostare un gestore di file per il routing con più sottodirectory come tih;ASP.NET MVC Routing per file con sottodirectory multiple

http://localhost/images/7/99/786936215595.jpg 

Ho provato a inserire questo nel file global.asax;

routes.Add(
    "ImageRoute", 
    new Route("covers/{filepath}/{filename}", 
    new ImageRouteHandler())); 

Sto usando l'ImageHandler trovato in questo Question, che funziona alla grande se si dispone di un singolo sub-directory (ad esempio '/images/15/786936215595.jpg') ma non riesce quando si dispone di più directory.

ho provato ad installare un jolly e che non ha funzionato (cioe 'nuova Rotta ('cover/{filepath}/*/{filename}'')

Questo sta scontando le immagini da un grande NAS (si pensi qualcosa come 3 milioni di immagini) quindi la sua non mi piace posso solo spostare i file

Grazie

risposta

3

Ok dopo tanto giocare e google fu ho trovato come farlo funzionare.

Modificare la definizione del percorso in questo modo;

routes.Add(
    "ImageRoute", 
    new Route("images/{*filepath}", 
    new ImageRouteHandler())); 

Quindi inserire questo dopo il MapRoute predefinito. La parte importante è il "*" prima del filepath, dice a MVC di inviare qualsiasi cosa che segue come parte del percorso path RouteData. Quindi nel metodo GetHttpHandler() posso ottenere il percorso completo usando questo;

string fp = requestContext.RouteData.Values["filepath"] as string; 

Woot!

+0

Grazie, questo mi ha impostato sulla retta via. –

0

non riesci a trattare l'intero percorso come parametro di una route ti piace così:.!?

routes.Add(
    "ImageRoute", 
    "/images/{path}", 
    new { controller = "Image", action = "Image" } 
); 

E quindi accedere all'intero percorso nel metodo di azione ActionResult Image(string path) { }?

Problemi correlati