2013-12-03 4 views
0

У меня была аналогичная проблема, как представлено здесь: Using ASP.NET routing to serve static filesИспользование маршрутизации ASP.NET для обслуживания статических файлов (часть 2)

В RouteConfig, я добавил следующие строки:

routes.Add ( " Изображения ABC ", новый маршрут (" Images/abc/{* filename} ", новый ImageRouteHandler (" abc ")));

routes.Add ( «Images XYZ», новый маршрут («Images/xyz/{* filename}», новый ImageRouteHandler («xyz»)));

я нашел довольно приличную реализацию ImageRouteHandler здесь: http://www.phpvs.net/2009/08/06/aspnet-mvc-how-to-route-to-images-or-other-file-types/, я просто добавил параметр в CTOR построить физический путь ...

Constraint: У меня есть другие пути в Images, рядом с АВС или XYZ, что я не хочу, чтобы меня направили.

Примечание: Я использую {*filename} так я могу сослаться на несколько сегментов ... подробнее здесь: http://msdn.microsoft.com/en-us/library/cc668201%28v=vs.100%29.aspx#handling_a_variable_number_of_segments_in_a_url_pattern

Вопросы:

  1. Могу ли я объединить эти 2 маршрута в 1 одном операторе без нарушают ограничение? возможно, использование некоторого правильного выражения , такого как Images/[abc|xyz]/...

  2. Позиция имеет значение. ниже или выше маршрутизации по умолчанию.

    routes.MapRoute ( название: "По умолчанию", URL: "{контроллер}/{действие}/{ID}", по умолчанию: новый {контроллер = "Home", действие = "Index", идентификатор = UrlParameter.Optional} );

    • а) если код размещен выше маршрутизации по умолчанию, это испортит RedirectToAction

    • б) и если код размещен ниже маршрутизации по умолчанию, он не будет ручка непосредственная маршрутизация, например. Images/abc/img.jpg не будет обработаны, но Images/abc/level1/level2/level3/img.jpg будет обработаны

Почему? без понятия.

ответ

0

Зафиксировано:

маршруты.Add («Images Specials», новый маршрут («Images/{folder}/{* filename}», null, новый RouteValueDictionary {{«исходящий», новый ImageRouteConstraint()}}, новый ImageRouteHandler()) );

Смежные вопросы